我的代码看起来像这样
var i = 0;
try
{
i = faultyProcedure();
}
catch (Exception ex)
{
try
{
throw new CustomException("faultyProcedure called", ex);
}
catch (CustomException) {}
}
虽然它有效但看起来很傻。 所有日志记录,邮件等都会在必要时退出应用程序。
自定义异常有没有办法捕获/自杀,所以不需要内部的try / catch块?
答案 0 :(得分:4)
那么......您正在使用CustomException
处理其他异常?如果是这种情况,那么我很抱歉成为那个告诉你的人,但它看起来并不傻, 愚蠢。
这不是什么例外。
例外情况旨在表明特殊情况,主要是您在编写代码时无法控制的事项,例如IO或网络问题。
要处理异常,您可以将代码编写到任何类中,但是没有必要抛出新的异常来处理catch子句捕获的异常。
我相信这是vexing exception的一个例子:
Vexing 例外是不幸的设计决策的结果。在完全非特殊情况下抛出异常情况,因此必须始终抓住并处理。
Eric Lippert的博客中的示例是int.Parse
,但我认为这段代码与一个令人烦恼的例外情况一样有效。