Tag: 异常处理

控制台应用程序中的.NET Global异常处理

问题:我想在控制台应用程序中为未处理的异常定义全局异常处理程序。 在asp.net中,可以在global.asax中定义一个,而在windows应用程序/服务中,可以定义如下 AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyExceptionHandler); 但是我怎样才能定义一个控制台应用程序的全局异常处理程序? currentDomain似乎不工作(.NET 2.0)? 编辑: 啊,愚蠢的错误。 在VB.NET中,需要在currentDomain前添加“AddHandler”关键字,否则在IntelliSense中不会看到UnhandledException事件。 这是因为VB.NET和C#编译器不同地处理事件处理。

WPF全局异常处理程序

有时,在不可重现的情况下,我的WPF应用程序崩溃,没有任何消息。 应用程序只需立即关闭。 哪里是最好的地方来实现全球Try / Catch块。 至少我必须实现一个消息框:“抱歉造成不便…”

为什么空的catch块是一个坏主意?

我刚刚看到一个关于try-catch的问题 ,哪些人(包括Jon Skeet)认为空的catch块是非常糟糕的主意? 为什么这个? 有没有空的渔获不是错误的设计决定? 我的意思是,例如,有时你想从某处(web服务,数据库)得到一些额外的信息,你真的不在乎你是否会得到这个信息。 所以你试着去得到它,如果有什么事情发生,没关系,我只需要添加一个“catch(Exception ignored){}”,这就是全部

一次捕获多个异常?

只是简单地捕获System.Exception就不鼓励了。 相反,只有“已知的”例外应该被捕获。 现在,这有时会导致不必要的重复代码,例如: try { WebId = new Guid(queryString["web"]); } catch (FormatException) { WebId = Guid.Empty; } catch (OverflowException) { WebId = Guid.Empty; } 我想知道:是否有一种方法来捕获这两个异常,只调用WebId = Guid.Empty调用一次? 给出的例子很简单,因为它只是一个GUID 。 但想象一下代码在多次修改对象的位置,如果其中一个操作以预期的方式失败,则需要“重置”该object 。 但是,如果出现意想不到的例外情况,我还是要把这个提高一些。