在Java中,异常有两种类型,主要是未检查异常和检查异常。检查异常允许程序在“catch” block 中捕获并处理异常时进行恢复。如果我没记错的话,未经检查的异常只会导致程序崩溃,因为它们没有被捕获,并且错误一直冒出来,得到了 main 方法而没有被捕获。
也就是说,在 Mono 中,有 ApplicationException 和 SystemException,我想知道它们在 Mono 中是否具有相同的用途。
最佳答案
不,他们不是。区别是不同的。
在Java中,检查与非检查的区别在于Java代码是否需要处理异常:
- 不需要处理未经检查的异常
- 需要捕获或在封闭方法的签名中声明受检查的异常。
(您应该根据您是否期望/希望调用者处理异常来选择将异常声明为已检查还是未检查。例如,您通常希望应用执行某些操作以从 IOException 中恢复
,但是 NullPointerException
通常是一个错误,除了记录和退出之外无法处理。)
相比之下,.NET 中的 ApplicationExceptions
与 SystemExceptions
是关于异常的含义;参见Difference Between Application Exception and System Exception 。表面上的目的是允许程序区分框架异常和自定义异常。 (但实际上它并没有真正起作用......因为程序员不遵循指南/约定。)
I'm checking really only to see if the distinction would crash a running program if
SystemException
was thrown instead of anApplicationException
你不能做出这样的概括。如果抛出任一类型的异常(或任何其他类型)且未捕获1,应用程序就会崩溃。对于 Java 异常也是如此。
1 - 在 Java 中,这取决于默认异常处理程序的行为。
关于java - Mono 中的 SystemException 和 ApplicationException 与 Java 中的未检查和已检查异常相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55944852/