抛出异常以停止进程

时间:2011-07-20 12:43:33

标签: c# exception-handling

有些时候在C#中我想抛出一个无法处理的异常。升级的异常导致进程停止。这可能吗?

6 个答案:

答案 0 :(得分:4)

您可以执行以下操作:

class BadassException : Exception
{
  public BadassException(string message)
  {
    Environment.FailFast(message);
  }
}

...

throw new BadassException("Erk!!!");

答案 1 :(得分:2)

如果您不想处理异常,请不要处理它。

答案 2 :(得分:2)

如何简单地关闭这个过程:

Process.GetCurrentProcess().Close();

答案 3 :(得分:2)

那不是例外,那是一颗原子弹。

但说真的,有更好的方法来处理这种情况。如果您希望终止流程,请查看Application.Exit等选项。

答案 4 :(得分:0)

这是不可能的,因为每个异常都必须从Exception基类继承,你可以做catch(Exception)

然而,正如其他人所指出的,你可以快速失败。您还可以抛出无法捕获的异常,如下所示:

public class MyLibraryClass
{
    private class MyException : Exception { ... }

    public void MyMethod() { throw new MyException(); }
}

然后来电者无法catch(MyException exc),只能catch(Exception exc)。但是,这仍然意味着可以捕获异常。

答案 5 :(得分:0)

任何未处理的异常都将停止您的申请。通常,应用程序具有应用程序或顶级异常处理程序,可捕获任何未处理的异常,执行任何数据维护并正常关闭应用程序。

在您的情况下,我认为最好的方法是创建一个新的异常,该异常派生自类似StopApplicationException的异常类。

然后,只要您需要停止应用程序,就抛出此类异常。在你的catch块中进一步向上调用堆栈:

catch (StopApplicationException)
{
  //Stop your application
}
catch (ArgumentNullException)
{
  //Null Exception Logic goes here...
}
catch  ...And so forth