一.异常
1.异常的基本介绍:
执行过程中出现的异常事件可划分成两类。
1)Error(错误):Java虚拟机无法处理的问题。比如:JVM系统内部错误、资源耗尽、stackoverflowError、OOM等问题,程序无法继续执行。
2)Exception:主要分为RuntimeException(运行时异常)、FileNotFoundException(编译时异常)两类异常。
运行时异常主要有:1)NullPointerException 空指针异常
2)ArithmeticException 算术运算异常
3)ArrayIndexOutOfBoundsException 数组下标越界异常
4)ClassCastException 类型转换异常
5)NumberFormatException 数字格式异常
编译时异常主要有:1)SqlException
2)IOException
3)FileNotFoundException
4)ClassNotFoundException
5)EOFException
6)IlegalArguementException
2.结构图:
二.异常处理
1.异常处理方式:
1)try-catch-finally 在代码中捕获发生的异常
2)throws 将发生的异常
2.try - catch异常处理
1)异常发生了,那么异常后面的语句就不会继续执行,直接跳到catch中执行
2)异常没有发生则按顺序执行,catch中的语句不会执行
3)不管有没有发生异常都要执行finally中的语句。
4)可以有多个catch语句捕捉不同的异常,但必须是子类异常在前,父类异常在后,因为如果发生异常只会匹配一个catch。
1)异常发生了,那么异常后面的语句就不会继续执行,直接跳到catch中执行
2)异常没有发生则按顺序执行,catch中的语句不会执行
3)不管有没有发生异常都要执行finally中的语句。
4)可以有多个catch语句捕捉不同的异常,但必须是子类异常在前,父类异常在后,因为如果发生异常只会匹配一个catch。
3.throws异常处理
1)对于编译异常,程序中必须要处理,否则无法运行。
2)对于运行时异常,如果没有显式的处理,就默认为throws处理
3)子类从写父类抛出异常的方法时,子类抛出的异常类型必须跟父类的相同或者为其的子类。
三.自定义异常
当程序中出现了一些错误,但在Throwable子类中并没有相关的错误信息描述时,我们可以自己设计异常类。
比如:规定的年龄在18-120,如果不符合则抛出一个自定义异常
四.throws和throw的区别
意义 | 位置 | 后面跟的类型 | |
throw | 手动生成异常对象的关键字 | 方法内部 | 异常对象 |
throws | 一种处理异常的方式 | 方法声明处 | 异常类型 |