java - 在 Java 中抛出自定义异常与内置异常

标签 java exception

我有点困惑,因为我希望能够在 Java 中抛出自定义异常。要在函数内执行此操作,我必须将 throws MyException 添加到函数的 header 。

然后任何依次调用该函数的东西都必须添加 throws MyException 或有一个 try-catch block 。但这是为什么呢?

例如,当在 java 中创建 Stack 并调用 pop 函数时,我不必使用 try-catch,但 Java 中的 pop 方法抛出 NoSuchElementException(或 w/e 它是)如果堆栈上没有元素。

最佳答案

NoSuchElementException 是一个 RuntimeException(未经检查的异常),我们不需要处理或声明 RuntimeExceptionS,因此编译器不会提示,而是在运行时抛出它。

在检查异常的情况下,即所有不是 RuntimeException 子类型的异常,编译器将检查合适的 catch 子句,使程序能够继续它的执行过程,在 catch 中执行操作之后;为此,您需要使用 try/catch block 来处理它们或使用 throws 子句声明它们 - 将处理异常的责任委托(delegate)给调用链的更高层。如果您的自定义异常不是 RuntimeException,已检查异常的规则也适用于您的自定义异常。

Checked exceptions ---> Forced by the compiler to handle or propagate

Un-checked exceptions ---> Not checked by the compiler thus appears at runtime

关于java - 在 Java 中抛出自定义异常与内置异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14009528/

相关文章:

java - Firebase init 提供程序类未找到异常

java - 如何在pdfBox中绘制虚线

java - 詹姆斯的发件箱

c# - try catch 捕获 .NET 线程池中的错误

java - 如何获取类中所有私有(private)数据成员的名称

java - 在 Groovy 中将 Hamcrest 匹配器与 JMock 一起使用

java - 处理 "NoClassDefFoundError"吗?

java - 我应该如何处理 Java Config @Bean 方法中的已检查和未检查异常以显示用户友好的错误原因?

Java 空指针

C++11:当定义移动构造函数时,按值返回对象不会抛出异常吗?