C# 可以自定义异常 catch/kill 本身吗?

C# Can a custom exception catch/kill itself?

我的代码是这样的

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

虽然有效,但看起来很傻。 自定义异常会执行所有日志记录、邮件等。必要时甚至会退出应用程序。

有没有办法让 catch/kill 本身的自定义异常,因此不需要内部 try/catch 块?

所以...您正在使用 CustomException 来处理其他异常?如果是这样,那么我很抱歉告诉你,但这不仅看起来很傻,而且 很傻。

这不是例外的目的。

异常旨在指示异常情况,主要是您在编写代码时无法控制的事情,例如 IO 或网络问题。

要处理异常,您可以将代码写入任何 class,但抛出新异常只是为了处理被 catch 子句捕获的异常是没有意义的。

我相信这是一个 vexing exception:

的例子

Vexing exceptions are the result of unfortunate design decisions. Vexing exceptions are thrown in a completely non-exceptional circumstance, and therefore must be caught and handled all the time.

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