有些时候在C#中我想抛出一个无法处理的异常。升级的异常导致进程停止。这可能吗?
答案 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