第十章、异常
作用:程序出问题,异常包着可以继续执行,不会停止运行
1、异常介绍
1.1、基本概念
java语法中,将程序执行中发生的不正确情况称为“异常”。(语法和逻辑错误不是异常)
1.2、异常分为两类
1、Error(错误):java虚拟机无法解决的严重问题(程序会奔溃)
(1)eg:JVM系统内部错误,资产耗尽,栈溢出
2、Exception:其他因编程错误或偶然的外在因素导致一般性问题,可以针对性的代码进行处理(例如空指针异常,网络连接)
(1)Exception分为两大类
①运行时异常
②编译时异常
1.3、异常体系图


1、常见的运行时异常
1、NullPointerException:空指针异常
(1)当应用程序试图在需要对象的地方使用null时,抛异常
2、ArithmeticException:数学运算异常
(1)异常的运算条件。eg:除数为0
3、ArrayIndexOutOfBoundsException:数组下标越界异常
(1)非法索引访问数组,索引下标超过范围。
4、ClassCastException:类型转换异常
(1)试图将对象强制转换为不是实例的子类
5、NumberFormatException:数字格式不正确异常
(1)字符串转换为数字类型,但是字符串不能转换为合适的数字,抛出异常。
2、编译异常
1、介绍
(1)理解:编译期间,必须处理的异常,否则不通过
2、常见的编译异常
(1)SQLException:操作数据库时,查询表可能发生异常
(2)IOException:文件操作时,发生的异常
(3)FileNotFoundException:文件不存在发生异常
(4)ClassNotFoundException:加载类,类不存在时,异常
(5)EoFException:操作文件,到文件末尾,发生异常
(6)IIIegalArguementException:参数异常
1.4、异常处理
1、基本介绍
1、异常处理的方式
2、异常处理的方式
3、try-catch-finally
1、程序员在代码中捕获发生的异常,自行处理
2、示意图:

3、基本语法
4、☣⚔try-catch异常处理注意事项
(1)如果发生异常,异常后的(try内)的代码不会执行,直接进入打catch中
(2)如果没有异常,则执行try内代码,不执行catch
(3)如果不管有没有异常都要执行的代码,可以放到-finally中。
(4)❗try代码块有多个异常,可以使用多个catch捕获不同异常进行处理,要求子类异常写在前面,父类异常写在后面
(5)允许有try-finally配合,可以不使用catch,相当于没有捕获异常,程序会挂掉
①应用场景有:执行一段代码,不管是否发生异常,都必须执行某个业务逻辑
5、throws
1、将发生的异常抛出,交给调用者(方法)处理,最高级的处理着就是JVM
2、示意图:

6、☢throws异常处理,注意事项
(1)运行时的异常,程序没有明确处理,默认就是throws的方式处理
(2)子类重写父类的方法时,对抛出异常的规定
①子类的重写抛出的异常要和父类异常一致
②或者子类重写抛出的异常要小于父类抛出的异常
(3)try-cathch和throws不能同一时刻出现。
2、自定义异常
1、基本概念:程序中出错,但是错误信息并没有在Throwable子类何总描述处理,自己设计,用于描述错误
2.1、自定义异常的步骤
1、定义类:自定义异常类名(程序员写)继承Exception或者RuntimeException
2、如果继承了Exception,属于编译异常
3、继承RuntimeException,属于运行异常
2.2、throws 和throw区别
1、比较表

2、例题
