提问人:leeand00 提问时间:5/2/2019 更新时间:7/21/2019 访问量:110
Mono 中的 SystemExceptions 和 ApplicationException 与 Java 中的未检查和选中异常相同吗?
Are SystemExceptions and ApplicationException in Mono the same as unchecked and checked exception in Java?
问:
在 Java 中,有两种类型的异常,主要是未检查的异常和已检查的异常。选中的异常允许程序在“catch”块中被捕获和处理时进行恢复。如果我没记错的话,未经检查的异常只会导致您的程序崩溃,因为它们没有被捕获并且错误一直冒泡而没有被捕获。
也就是说,在 Mono 中,有 ApplicationExceptions 和 SystemExceptions,我想知道它们在 mono 中是否有相同的目的。
答:
1赞
Stephen C
5/2/2019
#1
不,他们不是。区别是不同的。
在 Java 中,已检查与未检查的区别在于 Java 代码是否需要处理异常:
- 不需要处理未经检查的异常
- 选中的异常需要在封闭方法的签名中捕获或声明。
(您应该根据是否期望/希望调用方处理异常来选择将异常声明为选中或未选中。例如,您通常希望应用程序执行一些操作来从 中恢复,但 通常是一个错误,除了日志记录和救助之外无法处理。IOException
NullPointerException
相比之下,在 .NET 中,versus 是关于异常的含义;请参阅应用程序异常和系统异常之间的区别。表面上的目的是允许程序区分框架异常和自定义异常。(但它并没有真正起作用......在实践中......因为程序员不遵循准则/约定。ApplicationExceptions
SystemExceptions
我真的只是在检查如果抛出而不是抛出,这种区别是否会使正在运行的程序崩溃
SystemException
ApplicationException
你不能一概而论。如果抛出任何一种异常(或任何其他类型)且未捕获1,则应用程序将崩溃。Java 异常也是如此。
1 - 在 Java 中,这取决于默认异常处理程序的行为。
评论