2016-01-14 5 views
0

Я пытаюсь обрабатывать необработанные исключения в консольном приложении asp.net 5, но я, похоже, не поймаю эти ошибки, используя код. Как только возникает исключение, код разбивается. Есть ли способ в dnx-приложении поймать необработанные исключения?ASP.NET Core 1.0 Глобальный обработчик исключений в консольном приложении (DNX)

public class Program 
{ 
    [STAThread] 
    public static void Main(string[] args) 
    {   
     #if !DNXCORE50 


     // Register unhandled exception handler 
     AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledExceptionHandler); 

     // Throw exception 
     throw new Exception("1"); 

     #endif    
     Console.ReadLine(); 
    } 



    #if !DNXCORE50 


    /// <summary> 
    /// Catch all unhandled exceptions in all threads. 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="args"></param> 
    private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs args) 
    { 
     try 
     { 
      // Get the exception that was thrown 
      Exception exceptionThrown = (Exception)args.ExceptionObject; 

      Console.WriteLine("Information coming from exception handler");         
     } 
     catch (Exception ex) 
     {     
      Console.WriteLine(ex.ToString());     
     } 
    } 

    #endif 

} 
+0

Это не дозвонились, потому что ваше исключение в приложении консоли, а не уровень вашего домена приложения? Другими словами, ваше исключение в консольном приложении выдается на уровень выше, чем вы слушаете событие UnhandledException. Имеет ли это смысл? – dustinmoris

+0

Думаю, я понимаю, что вы имеете в виду, так что мне нужно сделать, чтобы захватить эти исключения? – DotnetShadow

+0

@DotnetShadow рассмотрите нижеприведенный ответ. –

ответ

0

Вы можете выводить исключения из командной строки.

«ссылки Команды DNX несколько переменных окружения, такие как DNX_TRACE, которые влияют на его поведение.

Установите DNX_TRACE переменных окружения на 1, и запустить приложение снова. Вы должны увидеть гораздо больше продукции.»

Вы можете прочитать больше об этом here

+0

Спасибо за дополнительную информацию, но я пытаюсь поймать ошибку, чтобы я мог ее зарегистрировать. Хотя ваша информация показывает, как получить дополнительную информацию. Команда .NET работает над этой проблемой, чтобы обеспечить способ захвата исключения. https://github.com/dotnet/coreclr/issues/2999 – DotnetShadow

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