C#可以自定义异常捕获/自杀吗?

时间:2018-04-24 05:36:58

标签: c# custom-exceptions custom-error-handling

我的代码看起来像这样

var i = 0;
try
{
    i = faultyProcedure();
}
catch (Exception ex)
{
    try
    {
        throw new CustomException("faultyProcedure called", ex);
    }
    catch (CustomException) {}
}

虽然它有效但看起来很傻。 所有日志记录,邮件等都会在必要时退出应用程序。

自定义异常有没有办法捕获/自杀,所以不需要内部的try / catch块?

1 个答案:

答案 0 :(得分:4)

那么......您正在使用CustomException处理其他异常?如果是这种情况,那么我很抱歉成为那个告诉你的人,但它看起来并不傻, 愚蠢。

这不是什么例外。

例外情况旨在表明特殊情况,主要是您在编写代码时无法控制的事项,例如IO或网络问题。

要处理异常,您可以将代码编写到任何类中,但是没有必要抛出新的异常来处理catch子句捕获的异常。

我相信这是vexing exception的一个例子:

  

Vexing 例外是不幸的设计决策的结果。在完全非特殊情况下抛出异常情况,因此必须始终抓住并处理。

Eric Lippert的博客中的示例是int.Parse,但我认为这段代码与一个令人烦恼的例外情况一样有效。