当前位置:   article > 正文

java 中 CheckedException 和 UnCheckedException_checed exceptionjava语句

checed exceptionjava语句

    仅作为学习记录。

 

1. Exception ,Exception 作为 异常类的顶层接口。合理的Java应用程序应该想要捕获 Exception(含其子类),Exception 继承自(is-a)Throwable。

  1. /**
  2. * The class {@code Exception} and its subclasses are a form of
  3. * {@code Throwable} that indicates conditions that a reasonable
  4. * application might want to catch.
  5. *
  6. * <p>The class {@code Exception} and any subclasses that are not also
  7. * subclasses of {@link RuntimeException} are <em>checked
  8. * exceptions</em>. Checked exceptions need to be declared in a
  9. * method or constructor's {@code throws} clause if they can be thrown
  10. * by the execution of the method or constructor and propagate outside
  11. * the method or constructor boundary.
  12. *
  13. * @author Frank Yellin
  14. * @see java.lang.Error
  15. * @jls 11.2 Compile-Time Checking of Exceptions
  16. * @since JDK1.0
  17. */
  18. public class Exception extends Throwable {

 

从第二段注释中,我们可以看到。CheckedException 是 Exception 的子类,但不是 RuntimeException 的子类。CheckedException 需要声明在 方法或者构造器 的抛出异常语句部分( public  void methodA() throws xxx ),从而在方法或构造器 执行出现异常时,传播到 该方法或构造器 之外。

 

2. RuntimeException  运行异常,JVM 执行中会抛出 一系列 运行时异常(或者其子类)。

  1. /**
  2. * {@code RuntimeException} is the superclass of those
  3. * exceptions that can be thrown during the normal operation of the
  4. * Java Virtual Machine.
  5. *
  6. * <p>{@code RuntimeException} and its subclasses are <em>unchecked
  7. * exceptions</em>. Unchecked exceptions do <em>not</em> need to be
  8. * declared in a method or constructor's {@code throws} clause if they
  9. * can be thrown by the execution of the method or constructor and
  10. * propagate outside the method or constructor boundary.
  11. *
  12. * @author Frank Yellin
  13. * @jls 11.2 Compile-Time Checking of Exceptions
  14. * @since JDK1.0
  15. */
  16. public class RuntimeException extends Exception {

从第二段注释中,我们可以知道。Unchecked Exception 包含 RuntimeException 及其子类。Unchecked Exception 不需要在 方法或构造器 上声明异常抛出的原因( public void methodA() {} ),从而在 该方法或构造器 执行出现异常时,传播到 该方法或构造器 之外。

 

 

Java 定义了两种异常:

  - Checked exception: 继承自 Exception 类是 checked exception。代码需要处理 API 抛出的 checked exception,要么用 catch 语句,要么直接用 throws 语句抛出去。

  - Unchecked exception: 也称 RuntimeException,它也是继承自 Exception。但所有 RuntimeException 的子类都有个特点,就是代码不需要处理它们的异常也能通过编译,所以它们称作 unchecked exception。RuntimeException(运行时异常)不需要try...catch...或throws 机制去处理的异常。

NullpointerException 的继承级别。 

 

NullpointerException 继承自 RuntimeException,所以它是个 unchecked exception。

 最常用的五种RuntimeException:    

 

 ArithmeticException

int a=0;
int b= 3/a;

 ClassCastException:

Object x = new Integer(0);
System.out.println((String)x);

 IndexOutOfBoundsException
    ArrayIndexOutOfBoundsException,
    StringIndexOutOfBoundsException 

int [] numbers = { 1, 2, 3 };
int sum = numbers[3];

IllegalArgumentException
    NumberFormatException

int a = Interger.parseInt("test");

NullPointerExceptionextends

 

 

小结:

检查性异常: 不处理编译不能通过

非检查性异常:不处理编译可以通过,如果有抛出直接抛到控制台。

运行时异常: 就是非检查性异常

非运行时异常: 就是检查性异常

 

参考 https://blog.csdn.net/xjbclz/article/details/53151552

 

 

 

 

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/213791
推荐阅读
相关标签
  

闽ICP备14008679号