wei*_*in8 5 .net c# multithreading exception-handling
您对在线程执行中处理异常有何看法?更具体地说,如果在try-catch子句的catch块中抛出异常怎么办?如果异常未处理,线程会发生什么?
我不得不反对仁,或者至少听说他的意思.
只有处理异常才能实际处理它们.只有你可以对出了什么问题做些什么,或者添加信息.不要因为你可以处理它们.
try {
// ..
} catch (Exception ex) {
Console.WriteLine(ex.Message);
}
Run Code Online (Sandbox Code Playgroud)
以上是非常糟糕的.首先,您不显示整个异常,而只显示消息.其次,你让事情继续下去,而你不知道这个过程处于什么状态.
您对在线程执行中处理异常有何看法?
您应该尽可能地处理异常,并且只要您预期异常.澄清:我完全赞同约翰,你不应该处理各地的例外情况 - 只有你可以对它们做些什么.但是,您永远不应该在线程中处理异常,因为这会导致严重的问题.有一个root异常处理程序,让你的线程正常死亡(在记录问题之后......)
更具体地说,如果线程被抛入try-catch子句的catch块中,该怎么办?
你的意思是:如果在catch块中抛出异常怎么办?好吧,然后它被当前的try-catch块无法处理.最好不要在catch块中放置太多处理以尽可能避免这种情况.
如果线程未处理,线程会发生什么?
你的意思是:如果异常未处理,线程会发生什么?它死了.
正如本提到的那样:
线程中未捕获的异常会在线程的AppDomain中触发UnhandledException.您可以通过添加事件处理程序来监视这些:
Run Code Online (Sandbox Code Playgroud)AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
归档时间: |
|
查看次数: |
7700 次 |
最近记录: |