1 异常
快捷键 ctrl + alt + t
try catch
即使出现了异常,程序也可以继续执行
异常两大类
Error 异常
JVM无法解决的严重问题 程序会崩溃
StackOverflowError栈溢出 OutofMemoryError内存不足
Exception 异常
其他因编程错误或偶然存在的外在因素导致的一般性问题,可以使用针对性的代码处理
又分为编译时异常 和 运行时异常
RuntimeException
①NullPointerException 空指针异常 当程序在需要的地方使用null时抛出
②ArithmeticException 数学运算异常
③ArrayIndexException 数组下标越界异常
④ClassCastException 类型转换异常
⑤NumberFormatException 数字格式不正确异常
FileNotFoundException
①SQLException 操作数据库异常
②IOException 操作文件异常
③FileNotFoundException 找不到文件异常
④ClassNotFoundException 加载类时找不到异常
⑤EOFException 操作文件时,到文件末尾异常
⑥ILLegalArguementException 参数异常
2 异常处理机制
①try - catch - finally
程序员在代码中捕获发生的异常 自行处理
try{}
catch(Exception e){try把异常封装成对象e 传递给catch}
finally{不管try代码块是否有异常发生 始终执行finally代码块 通常将释放资源的代码放在这里}
可以有多个catch语句
没有异常就不执行catch……
②throws
将发生的异常抛出 交给调用者(方法)处理 最顶级的处理者就是JVM
如果一个方法中可能生成某种异常 但并不确定如何处理这种异常,可以使用throws 表示将不对这些异常进行处理 而由该方法的调用者进行处理
在方法声明中用throws语句可以声明抛出异常的列表 throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类
throws关键字后也可以是异常列表 即 可以抛出多个异常
3 处理细节
对于编译异常 程序中必须处理 比如 try-catch 或 throws
对于运行异常,如果没有处理,默认就是throws处理
子类重写父类方法时 对抛出异常的规定 :子类重写的方法,抛出的异常类型必须和父类一致,要么为父类抛出的异常的子类型
throws过程中 如果由方法try-catch 就相当于处理异常 就可以不必throws
4 自定义异常
当程序中出现了某种“错误”但错误信息并没有在Throwable中描述 可以自己设计异常类,用于描述该错误类型信息
步骤
①定义类:自定义异常类名(自己写)
②继承Exception 或 RuntimeException
5 Throw 和 Throws
关键字 | 意义 | 位置 | 后面跟的东西 |
Throws | 异常处理的一种方式 | 方法声明处 | 异常类型 |
Throw | 手动生成异常对象的关键字 | 方法体中 | 异常对象 |
try-catch-finally中
最后return!
最后return!
最后return!