最近我参加了Jeffrey Richter关于.NET的培训课程.他提到了一种编码"死亡很棒"的策略.也就是说,即使在程序或事件循环的根目录下也不要写"catch(Exception ex)".如果抛出一些未处理的异常,只需让进程死掉.
我不确定这是对的.就个人而言,我更喜欢用" try {...} catch(Exception ex) {log and try to recover}"来包装在最高级别的执行中.实际上,如果从asXx抛出任何异常,ASP.NET不会死亡.如果它因异常而死亡,那么一个银弹请求可能会使整个服务无效.
你怎么看?
我在项目中找到了一些看起来像这样的代码:
int main(int argc, char *argv[])
{
// some stuff
try {
theApp.Run();
} catch (std::exception& exc) {
cerr << exc.what() << std::endl;
exit(EXIT_FAILURE);
}
return (EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么会有例外.如果不是,则应用程序将退出并打印异常.
你认为有什么好理由在这里捕捉异常吗?
编辑:我同意打印异常错误是好的.但是,重新抛出异常不是更好吗?我觉得我们在这里吞咽它...