jdk

JAVA非受检异常和受检异常的区别等

2022-01-11  本文已影响0人  名字是乱打的

一 .两种异常结构

java中的异常和错误都继承自java.lang.Throwable img

在异常处理的时候,都会接触到受检异常(checked exception)和非受检异常(unchecked exception)这两种异常类型。
非受检异常指的是java.lang.RuntimeException和java.lang.Error类及其子类,所有其他的异常类都称为受检异常。两种类型的异常在作用上并没有差别。

两者的区别主要在:受检的异常是由编译器强制执行的,必须捕获,用于指示不受程序控制的异常情况(例如,I/O 错误),而非受检的异常在运行时发生,用于指示编程错误(例如,空指针。正因为如此,受检异常在使用的时候需要比非受检异常更多的代码来避免编译错误。

二 .两者的常见异常

uncheckedExcepiton(RuntimeException) CheckedException
Java.lang.ArithmeticException    Java.lang.ArrayStoreExcetpion   Java.lang.ClassCastException   Java.lang.EnumConstantNotPresentException   Java.lang.IllegalArgumentException   Java.lang.IllegalThreadStateException   Java.lang.NumberFormatException   Java.lang.IllegalMonitorStateException   Java.lang.IllegalStateException   Java.lang.IndexOutOfBoundsException   Java.lang.ArrayIndexOutOfBoundsException   Java.lang.StringIndexOutOfBoundsException   Java.lang.NegativeArraySizeException’   Java.lang.NullPointerException   Java.lang.SecurityException   Java.lang.TypeNotPresentException   Java.lang.UnsupprotedOperationException Java.lang.ClassNotFoundException   Java.lang.CloneNotSupportedException   Java.lang.IllegalAccessException   Java.lang.InterruptedException   Java.lang.NoSuchFieldException   Java.lang.NoSuchMetodException

三 异常的选择

一直以来,关于在程序中到底是该使用受检异常还是非受检

四. 扩展:一道经典的面试题

一道非常经典的面试题,NoClassDefFoundError 和 ClassNotFoundException 有什么区别?

@CallerSensitivepublic static Class<?> forName(String className)  throws ClassNotFoundException 
{
  Class<?> caller = Reflection.getCallerClass();  
  return forName0(className, true, ClassLoader.getClassLoader(caller), caller);
}

总的来说,ClassNotFoundException 和 NoClassDefFoundError 都是由 CLASSPATH中缺少类引起的,通常是由于缺少 JAR 文件而引起的,但是如果 JVM 认为应用运行时找不到相应的引用,就会抛出 NoClassDefFoundError 错误;当你在代码中显示的加载类比如 Class.forName() 调用时却没有找到相应的类,就会抛出java.lang.ClassNotFoundException

问题解答
面试题:请你说一下对受检异常和非受检异常的理解·
回答: 受检异常和非受检异常,都是派生自Throwable这个类。他们的区别是
受检异常: 是指需要调用者显示通过try-catch捕获的异常
非受检异常: 是指不需要调用者显示捕获的异常。

之所以要定义受检异常和非受检异常主要是因为两者有着不同的作用

上一篇 下一篇

猜你喜欢

热点阅读