异常体系

Exception相关
Java异常处理的五个关键字:try、catch、finally、throw、throws
Throwable中的常用方法:
public void printStackTrace() :打印异常的详细信息。
包含了异常的类型,异常的原因,还包括异常出现的位置,在开发和调试阶段,都得使用printStackTrace。
public String getMessage() :获取发生异常的原因。
提示给用户的时候,就提示错误原因。
public String toString() :获取异常的类型和异常描述信息(不用)。

异常分类

Error:无法处理,只能尽量避免,比如内存溢出。
int[] arr = new int[102410241024];
运行时异常(RuntimeException):运行期异常,java程序运行过程中出现的问题。在编译时期,运行异常不会编译器检测(不报错)。(如数组越界异常)
编译时期异常:checked异常。在编译时期,就会检查,如果没有处理异常,则编译失败。(如日期格式化异常)
常见的运行时异常:
ArrayStoreException 试图将错误类型的对象存储到一个对象数组时抛出的异常
ClassCastException 试图将对象强制转换为不是实例的子类时,抛出该异常
IllegalArgumentException 抛出的异常表明向方法传递了一个不合法或不正确的参数
IndexOutOfBoundsException 指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出
NoSuchElementException 表明枚举中没有更多的元素
NullPointerException 当应用程序试图在需要对象的地方使用 null 时,抛出该异常

常见受查异常:
1、ClassNotFoundException
2、DataFormatException
3、IOException
4、SQLException
5、 FileNotFoundException

注意

多个catch罗列异常处理方式,要求多个catch中的异常不能相同,并且若catch中的多个异常之间有子父类异常的关系,那么子类异常要求在上面的catch处理,父类异常在下面的catch处理。
如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异
常。
父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出

关于throw:
1.throw关键字必须写在方法的内部
2.throw关键字后边new的对象必须是Exception或者Exception的子类对象
3.throw关键字抛出指定的异常对象,我们就必须处理这个异常对象
throw关键字后边创建的是RuntimeException或者是RuntimeException的子类对象,我们可以不处理,默认交给JVM处理(打印异常对象,中断程序)
throw关键字后边创建的是编译异常(写代码的时候报错),我们就必须处理这个异常,要么throws,要么try…catch

关于throws:
方法内部如果抛出了多个异常对象,那么throws后边必须也声明多个异常(逗号隔开)
如果抛出的多个异常对象有子父类关系,那么直接声明父类异常即可
调用了一个声明抛出异常的方法,我们就必须的处理声明的异常
要么继续使用throws声明抛出,交给方法的调用者处理,最终交给JVM
要么try…catch自己处理异常
意思是谁调用了带throws的方法,要么在方法内try/catch掉,要么接着throws。

相关文章:

  • 2022-12-23
  • 2021-12-15
  • 2022-01-09
  • 2021-12-12
  • 2021-11-19
  • 2022-12-23
  • 2021-11-01
  • 2022-12-23
猜你喜欢
  • 2022-03-06
  • 2021-05-23
  • 2021-07-11
  • 2021-04-05
  • 2021-12-22
  • 2021-12-25
  • 2022-12-23
相关资源
相似解决方案