2014-09-13 3 views
1

В моей MVC 5 приложения, у меня есть этот код:Исключение не поймают

try 
{ 
    var inputFile = new MediaFile { Filename = videoPath }; 
    var outputFile = new MediaFile { Filename = Config.ThumbPath }; 

    using (var engine = new Engine()) 
    { 
     engine.GetMetadata(inputFile); 

     if (inputFile.Metadata != null && inputFile.Metadata.Duration.TotalSeconds > 0) 
     { 
      var options = new ConversionOptions { Seek = TimeSpan.FromSeconds(inputFile.Metadata.Duration.TotalSeconds/2) }; 
      engine.GetThumbnail(inputFile, outputFile, options); 

      byte[] imageArray = System.IO.File.ReadAllBytes(Config.ThumbPath); 
      base64ImageRepresentation = "data:image/jpeg;base64," + Convert.ToBase64String(imageArray); 
     } 
    } 

} 
catch (Exception ex) 
{ 
    if (!EventLog.SourceExists("MYAPP")) 
      EventLog.CreateEventSource("MYAPP", "Application"); 

    EventLog.WriteEntry("MYAPP", "CACHED: " + ex.Message); 
    EventLog.WriteEntry("MYAPP", "CACHED: " + ex.Message,EventLogEntryType.Warning,234); 
} 

engine.GetMetadata(inputFile); Line бросает это:

Необработанное исключение 'System.FormatException' типа произошло в mscorlib.dll

Это в вызове библиотеки ed MediaToolkit, который я установил из NuGet.

Почему моя попытка catch не поймает это исключение?

Файл, который он получает, поврежден, и поэтому он вызывает ошибку, но если это произойдет, я просто хочу перейти к следующему файлу. Но вместо этого приложение останавливается.

В журнале событий нет записи, но есть еще одна запись для исходного ASP.NET.

An unhandled exception occurred and the process was terminated. 

Application ID: /LM/W3SVC/2/ROOT 

Process ID: 7364 

Exception: System.FormatException 

Message: Input string was not in a correct format. 

StackTrace: at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) 
    at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) 
    at System.Convert.ToInt32(String value) 
    at MediaToolkit.Util.RegexEngine.TestAudio(String data, EngineParameters engine) 
    at MediaToolkit.Engine.<>c__DisplayClass9.<FFmpegEngine>b__5(Object sender, DataReceivedEventArgs received) 
    at System.Diagnostics.Process.ErrorReadNotifyUser(String data) 
    at System.Diagnostics.AsyncStreamReader.FlushMessageQueue() 
    at System.Diagnostics.AsyncStreamReader.GetLinesFromStringBuilder() 
    at System.Diagnostics.AsyncStreamReader.ReadBuffer(IAsyncResult ar) 
    at System.IO.Stream.ReadWriteTask.InvokeAsyncCallback(Object completedTask) 
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.IO.Stream.ReadWriteTask.System.Threading.Tasks.ITaskCompletionAction.Invoke(Task completingTask) 
    at System.Threading.Tasks.Task.FinishContinuations() 
    at System.Threading.Tasks.Task.FinishStageThree() 
    at System.Threading.Tasks.Task.FinishStageTwo() 
    at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 
    at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 
    at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 
    at System.Threading.Tasks.Task.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 
    at System.Threading.ThreadPoolWorkQueue.Dispatch() 
    at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() 
+0

Попробуйте добавить несколько журналов, чтобы проверить, входит ли приложение в блок catch после исключения и до его остановки. –

ответ

1

Возможно, ваш Visual Studio настроен, чтобы остановить выполнение каждого сгенерированного исключения (даже обработано). Вы можете проверить его в Debug -> Exceptions. Check Исключения для обычного языка Runtime категория, Thrown настройка. Если этот параметр установлен, VS прекратит выполнение для каждого сгенерированного исключения CLR, вы можете просто нажать F5, чтобы продолжить или отключить эту настройку.

Для получения дополнительной информации посетите MSDN.

+0

Нет, этот параметр не проверяется в моем vs. – gMailMan

Смежные вопросы