C#学习教程:在单独的线程上捕获未处理的异常不幸的是,Application.ThreadException不会在单独的线程中捕获那些未处理的错误。我知道AppDomain.CurrentDomain.UnhandledException但是,这似乎在触发时关闭了应用程序,而前者则没有。有没有办法在不关闭应用程序的情况下在单独的线程上处理未处理的异常?@Ani已经回答了你的问题。尽管我不同意线程中未处理的异常应该终止应用程序。使用线程通常意味着您拥有某种服务器应用程序。搞砸它可能会导致很多愤怒的用户。我写了一篇关于正确处理异常的小文章:http://blog.gauffin.org/2010/11/do-not-catch-that-exception/您应该始终捕获线程的异常。我通常使用以下模式:voidThreadMethod(objectstate){try{ActualWorkerMethod();}catch(Exceptionerr){_logger.Error("线程中未处理的异常。",err);}}voidActualWorkerMethod(){//做点聪明的事}通过将逻辑移动到单独的方法并将try/catch块保留在线程方法中,可以更容易地找到不能正确处理异常的线程方法。是的,您必须手动捕获线程上的异常。但是,这段代码:voidThreadMethod(objectstate){try{ActualWorkerMethod();}catch(Exceptionerr){_logger.Error("线程中未处理的异常。",err);}}voidActualWorkerMethod(){//dosomethingclever}可以使用PostSharp来简化:以上是C#学习教程:在单独的线程上捕获未处理的异常分享所有内容。关注—[LogExceptions]voidActualWorkerMethod(){//做点小聪明的事}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
