Răsfoiți Sursa

Check if file exists instead of catching exceptions

Bond_009 6 ani în urmă
părinte
comite
ffe79c8982

+ 5 - 4
Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs

@@ -246,13 +246,14 @@ namespace Emby.Server.Implementations.AppBase
 
         private object LoadConfiguration(string path, Type configurationType)
         {
-            try
+            if (!File.Exists(path))
             {
-                return XmlSerializer.DeserializeFromFile(configurationType, path);
+                return Activator.CreateInstance(configurationType);
             }
-            catch (FileNotFoundException)
+
+            try
             {
-                return Activator.CreateInstance(configurationType);
+                return XmlSerializer.DeserializeFromFile(configurationType, path);
             }
             catch (IOException)
             {

+ 10 - 20
Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs

@@ -286,28 +286,18 @@ namespace Emby.Server.Implementations.HttpClientManager
 
         private HttpResponseInfo GetCachedResponse(string responseCachePath, TimeSpan cacheLength, string url)
         {
-            try
-            {
-                if (_fileSystem.GetLastWriteTimeUtc(responseCachePath).Add(cacheLength) > DateTime.UtcNow)
-                {
-                    var stream = _fileSystem.GetFileStream(responseCachePath, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.Read, true);
-
-                    return new HttpResponseInfo
-                    {
-                        ResponseUrl = url,
-                        Content = stream,
-                        StatusCode = HttpStatusCode.OK,
-                        ContentLength = stream.Length
-                    };
-                }
-            }
-            catch (FileNotFoundException) // REVIEW: @bond Is this really faster?
-            {
-
-            }
-            catch (DirectoryNotFoundException)
+            if (File.Exists(responseCachePath)
+                && _fileSystem.GetLastWriteTimeUtc(responseCachePath).Add(cacheLength) > DateTime.UtcNow)
             {
+                var stream = _fileSystem.GetFileStream(responseCachePath, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.Read, true);
 
+                return new HttpResponseInfo
+                {
+                    ResponseUrl = url,
+                    Content = stream,
+                    StatusCode = HttpStatusCode.OK,
+                    ContentLength = stream.Length
+                };
             }
 
             return null;

+ 21 - 26
Emby.Server.Implementations/Library/LibraryManager.cs

@@ -395,38 +395,33 @@ namespace Emby.Server.Implementations.Library
 
                 foreach (var fileSystemInfo in item.GetDeletePaths().ToList())
                 {
-                    try
+                    if (File.Exists(fileSystemInfo.FullName))
                     {
-                        _logger.LogDebug("Deleting path {path}", fileSystemInfo.FullName);
-                        if (fileSystemInfo.IsDirectory)
+                        try
                         {
-                            _fileSystem.DeleteDirectory(fileSystemInfo.FullName, true);
+                            _logger.LogDebug("Deleting path {path}", fileSystemInfo.FullName);
+                            if (fileSystemInfo.IsDirectory)
+                            {
+                                _fileSystem.DeleteDirectory(fileSystemInfo.FullName, true);
+                            }
+                            else
+                            {
+                                _fileSystem.DeleteFile(fileSystemInfo.FullName);
+                            }
                         }
-                        else
+                        catch (IOException)
                         {
-                            _fileSystem.DeleteFile(fileSystemInfo.FullName);
+                            if (isRequiredForDelete)
+                            {
+                                throw;
+                            }
                         }
-                    }
-                    catch (FileNotFoundException)
-                    {
-                        // may have already been deleted manually by user
-                    }
-                    catch (DirectoryNotFoundException)
-                    {
-                        // may have already been deleted manually by user
-                    }
-                    catch (IOException)
-                    {
-                        if (isRequiredForDelete)
-                        {
-                            throw;
-                        }
-                    }
-                    catch (UnauthorizedAccessException)
-                    {
-                        if (isRequiredForDelete)
+                        catch (UnauthorizedAccessException)
                         {
-                            throw;
+                            if (isRequiredForDelete)
+                            {
+                                throw;
+                            }
                         }
                     }
 

+ 10 - 8
Emby.Server.Implementations/Library/UserManager.cs

@@ -1029,6 +1029,11 @@ namespace Emby.Server.Implementations.Library
         {
             var path = GetPolicyFilePath(user);
 
+            if (!File.Exists(path))
+            {
+                return GetDefaultPolicy(user);
+            }
+
             try
             {
                 lock (_policySyncLock)
@@ -1036,10 +1041,6 @@ namespace Emby.Server.Implementations.Library
                     return (UserPolicy)_xmlSerializer.DeserializeFromFile(typeof(UserPolicy), path);
                 }
             }
-            catch (FileNotFoundException)
-            {
-                return GetDefaultPolicy(user);
-            }
             catch (IOException)
             {
                 return GetDefaultPolicy(user);
@@ -1128,6 +1129,11 @@ namespace Emby.Server.Implementations.Library
         {
             var path = GetConfigurationFilePath(user);
 
+            if (!File.Exists(path))
+            {
+                return new UserConfiguration();
+            }
+
             try
             {
                 lock (_configSyncLock)
@@ -1135,10 +1141,6 @@ namespace Emby.Server.Implementations.Library
                     return (UserConfiguration)_xmlSerializer.DeserializeFromFile(typeof(UserConfiguration), path);
                 }
             }
-            catch (FileNotFoundException)
-            {
-                return new UserConfiguration();
-            }
             catch (IOException)
             {
                 return new UserConfiguration();

+ 12 - 9
Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs

@@ -101,17 +101,20 @@ namespace Emby.Server.Implementations.ScheduledTasks
 
             List<string> previouslyFailedImages;
 
-            try
+            if (File.Exists(failHistoryPath))
             {
-                previouslyFailedImages = _fileSystem.ReadAllText(failHistoryPath)
-                    .Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries)
-                    .ToList();
-            }
-            catch (FileNotFoundException)
-            {
-                previouslyFailedImages = new List<string>();
+                try
+                {
+                    previouslyFailedImages = _fileSystem.ReadAllText(failHistoryPath)
+                        .Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries)
+                        .ToList();
+                }
+                catch (IOException)
+                {
+                    previouslyFailedImages = new List<string>();
+                }
             }
-            catch (IOException)
+            else
             {
                 previouslyFailedImages = new List<string>();
             }

+ 15 - 32
Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs

@@ -129,21 +129,16 @@ namespace Emby.Server.Implementations.ScheduledTasks
                 {
                     if (_lastExecutionResult == null && !_readFromFile)
                     {
-                        try
+                        if (File.Exists(path))
                         {
-                            _lastExecutionResult = JsonSerializer.DeserializeFromFile<TaskResult>(path);
-                        }
-                        catch (DirectoryNotFoundException)
-                        {
-                            // File doesn't exist. No biggie
-                        }
-                        catch (FileNotFoundException)
-                        {
-                            // File doesn't exist. No biggie
-                        }
-                        catch (Exception ex)
-                        {
-                            Logger.LogError(ex, "Error deserializing {path}", path);
+                            try
+                            {
+                                _lastExecutionResult = JsonSerializer.DeserializeFromFile<TaskResult>(path);
+                            }
+                            catch (Exception ex)
+                            {
+                                Logger.LogError(ex, "Error deserializing {File}", path);
+                            }
                         }
                         _readFromFile = true;
                     }
@@ -532,28 +527,16 @@ namespace Emby.Server.Implementations.ScheduledTasks
 
         private TaskTriggerInfo[] LoadTriggerSettings()
         {
-            try
-            {
-                var list = JsonSerializer.DeserializeFromFile<IEnumerable<TaskTriggerInfo>>(GetConfigurationFilePath());
-
-                if (list != null)
-                {
-                    return list.ToArray();
-                }
-            }
-            catch (FileNotFoundException)
-            {
-                // File doesn't exist. No biggie. Return defaults.
-            }
-            catch (DirectoryNotFoundException)
+            string path = GetConfigurationFilePath();
+            if (!File.Exists(path))
             {
                 // File doesn't exist. No biggie. Return defaults.
+                GetDefaultTriggers();
             }
-            catch
-            {
 
-            }
-            return GetDefaultTriggers();
+            var list = JsonSerializer.DeserializeFromFile<TaskTriggerInfo[]>(path);
+
+            return list ?? GetDefaultTriggers();
         }
 
         private TaskTriggerInfo[] GetDefaultTriggers()