在C#中等效的Java RuntimeException?

问题描述 投票:24回答:5

C#是否相当于Java的java.lang.RuntimeException

(例如,可以在不必被捕获的情况下抛出异常,或者在抛出异常时程序崩溃。)

.net exception-handling c#-3.0 runtimeexception
5个回答
21
投票

SystemException是等效的,它是.NET代码可以引发的所有异常的基类。与应用程序异常相反。

从评论来看,听起来好像你想要抓住这个例外。在这种情况下你永远不应该使用SystemException,你会捕获太多。创建自己的异常类,派生自Exception。

.NET中没有例外规范,如果你正在追求的话。


1
投票

在.NET中,如果发生未处理的异常,程序流将失败; Windows应用程序将放弃,ASP.NET应用程序将一直冒泡到Global.asax的Application_Error处理程序。

在这方面,没有。但是,也许您可​​以包含一个您正在尝试执行的操作的示例,并且我们可以提供有关模式或方法的建议,以帮助您找到解决方案。


0
投票

我不这么认为。但是,你为什么要一个?最有可能的是,您可以通过.NET系统的其他部分实现您的目标。


0
投票

.NET没有这样的东西,但你可以在某种程度上模拟它。您可以,但许多人不建议,将应用程序的入口点包装在一个try / catch中,并捕获您正在寻找的异常,并吞下它。如果有更接近的东西,那么很棒。

这是以某种方式构建的,比如WPF中的DispatcherUnhandledException事件;您可以处理该事件,并设置DispatcherUnhandledExceptionEventArgs.Handled = true以保持应用程序运行。

一般来说,我不推荐这种模式。请改用Trace.WriteLine,如果需要,请编写Trace侦听器。请记住:例外是例外。发生异常事件意味着停止应用程序比继续处于不可预测状态更好。


0
投票
  1. C# does not have checked exceptions
  2. this list中选择最合适的例外。
© www.soinside.com 2019 - 2024. All rights reserved.