我们在编写程序的时候可能会有很多的问题存在,为了将来方便的表示这些问题的原因,类型,位置,Java就提供了异常对象供我们使用。
异常:程序出现了不正常的情况。
对应的异常:
Throwable:
Error:严重的问题,通常出现重大问题,运行的类不存在或者内存溢出,是不需要处理的,一般这种情况需要修改代码。
Exception:不严重的,
|--编译期间的:这个是我们需要处理的。捕获(try-catch)或者抛出(throws/throw)。
|--运行期间的:这个是我们不需要处理的,这个是需要修改代码。
如果出现了问题,我们自己没有处理,jvm会采用自动处理的方式。它把异常的类型,原因,位置直接显示在控制台,后面的代码是不能执行的。
A:编写处理代码
try{
可能发生问题的代码。
}catch(异常类名 变量名){
异常处理代码。
}finally{
释放资源。(数据库,IO)特点:它里面的代码永远会执行。
}
当一个代码中有多个问题:
A:一个个用异常处理方案解决。
B:针对所有问题写一个try...catch。一个try多个catch
在异常处理中,一旦try里面有问题了,就直接跳到catch里面执行。
异常或者错误,都是一他们所在体系的父亲作为后缀。
XxxException
XxxError
如果异常是平级关系,没有顺序问题。
如果异常存在子父类关系,父类一定要放在最后。
JDK新特性:多个catch用一个catch替代,不是说多个catch的内容用一个Exception处理。
格式:catch(异常1|异常2|异常3...变量名){}
B:抛出
把异常抛出,方法调用常见。
格式:在方法名称中跟着一个关键字:throws 异常类名。
异常分类
A:Exception 编译时异常
B:RuntimeException 运行时异常
异常处理:
A:try...catch...finally
B:thorws
如果能处理,尽量选择A,否则选择B。
运行时期异常和编译时期异常的区别?
A:运行时期异常是不需要try...catch或者throws的。
B:编译时期异常是需要进行处理的。
|
|