我怎么知道我有没有处理一些unchecked异常,我的.NET代码可以抛出?
-
18-09-2019 - |
题
在.NET中,方法签名不告诉我,如果我错过了处理一些例外,可以通过我的代码中抛出。 有一些工具,可以警告我,如果说我使用的是哈希表删除,但还没有办理ArgumentNullException?我不想在运行时会感到惊讶。
这意味着你需要知道你的代码非常好,否则unchecked异常也很难一起工作呢?
解决方案
其实,终止程序处理突发异常是应对这种情况,因为在一般情况下,程序的状态是不确定时,意想不到的事情发生的最好办法。如果您登录所有的异常,并有一个体面的一套验收测试,可以消除它们来自意外的异常是由于程序流程的问题。
通过检查方法输入,类单元测试,了解你的框架将让大多数例外预计防御性编程。
其他提示
有关Windows应用程序:
AppDomain currentDomain = default(AppDomain);
currentDomain = AppDomain.CurrentDomain;
// Handler for unhandled exceptions.
currentDomain.UnhandledException += UnhandledExceptionHandler;
// Handler for exceptions in threads behind forms.
Application.ThreadException += ThreadExceptionHandler;
public static void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e)
{
}
public static void ThreadExceptionHandler(object sender, Threading.ThreadExceptionEventArgs e)
{
}
有是你正试图完成什么没有语言支持。我们写了一个海关插件,以VS,以确保所有对我们的API的入口点有尝试接球记录。不过,我从来没有看到在强迫你以涵盖所有可能的声明例外的情况,因为你还必须写一些代码做一些有意义的事情错误语言的价值。大多数人只是看哪个编译抱怨写一个处理程序和隐藏,这可能是一些无用的代码,一个有用的错误。在某些情况下,它能够更好地失败,知道有一个问题。
您应该为您的应用程序,并写入单元,为您的应用程序的功能和集成测试,这将考验所有可能的使用情况增加最顶层的异常处理程序。这将帮助你消除几乎所有的unchecked异常。
也尽量不要捕捉异常,但消除的原因。 (即,不赶上ArgumentNullException
但不传递null
不隶属于 StackOverflow