异常
异常分类
- Error
- Exception
继承关系:Object<-Throwable<-(Error,Exception)
异常产生条件可以查看JDK文档
异常处理
- 隐式处理:利用JVM抛出(系统抛出)RuntimeException
JAVA中main方法的调用是JVM
- 显式处理
- 方法名+throws Exception
将Exception抛给调用方法来处理
- try...catch/finally捕获,finally作为出口,生成则必然执行
try和catch中带有return时,顺序执行其他表达式,再执行return后带的表达式(并且保留),然后finally最后再执行return
i=1;output=""; try{ if(i==1) {throw new Exception();} output+="1"; } catch(Exception e){ output+="0"; return output+="1"; } finally{ output+="3"; }
output:01
- 抛出+捕获:程序内部catch到后则不会throws到调用方法
- 嵌套处理:处理某些会中断程序的异常,比如除数为零。
- 方法名+throws Exception
例子:
public void method1() throws IOException
{...}
public void method2(){
try{
method1();
...
}
catch (IOException e){//此处捕获method1产生的异常
...
}
}
自定义异常对象
public class SelfGenerateException extends Exception{
SelfGenerateException(String str){
super(str);//调用Exception的构造方法
}
static void throwOne() throws SelfGenerateException{
...
if(...){
throw new SelfGenerateException(...);
}
}
}
网友评论