异常处理
概述
对于发生不正常情况,造成程序崩溃、退出、溢出等,称之为“异常”
try-catch后,被try的代码不会因异常而导致程序崩溃退出
基本分类
-
Error
Java虚拟机无法解决的严重问题
-
Exception
能够捕捉绝大部分异常,属于通式
分类
-
Error
Java虚拟机无法解决的严重问题
-
Exception
能够捕捉绝大部分异常,属于通式
编译时异常(checked) 运行时异常(unchecked) IOException NullPointerException FileNotFoundException ArrayIndexOutOfBoundsException ClassNotFoundException ClassCaseException NumberFormatException InputMismatchException ArithmaticException
使用
try{
}catch(要捕捉的异常 输出的异常原因){
// 常用1.String getMessage()
// 2.printStackTrace()
}
finally{
}
可选:finally 为try后执行的代码,一般用来release
throws
- throws + 异常类型 写在方法的声明处。指明此方法执行时,可能会抛出的异常类型。一旦该方法执行时,出现了异常,仍会在异常代码处生成一个异常类的对象。此对象满足throws后异常类型时,就会被抛出,异常代码后续的代码,就不再执行。
- 不同
- try-catch:真正的将异常处理掉了
- throws:将异常抛给方法的调用者,不处理异常。
顾名思义,丢弃/抛出~
手动抛出异常
public void regist(int id){
// 接收异常
throw new RuntimeException(“String”);
}
自定义异常类
- 继承于现有的异常结构:
RuntimeException、Exception
- 提供全局常量:
serialVersionUID
- 提供重载的构造器
final和finally
- final:太监类
- finally:在最后执行
final | finally |
---|---|
修饰类,不能被其他类继承 | 可以间接被继承 |
修饰方法,不能被重写 | - |
修饰变量,此时"变量"就称为一个常量 | - |
修饰属性,可以显式初始化 | - |
修饰局部变量,变为常量且仅能使用在方法体内,无法重新赋值 | - |