java异常(Exception)

idea使用ctrl+alt+t进行对选中的代码环绕
Java使用异常来表示错误,并通过try ... catch捕获异常;

Java的异常是class,并且从Throwable继承;

Error是无需捕获的严重错误,已经使程序崩溃,Exception是应该捕获的可处理的错误;

常见异常

  • NullPointerException 空指针异常
  • ClassCastException 类型转换异常
  • ArrayOutOfBoundsException 下标越界异常

捕获异常

使用try catch代码块
会发生异常的代码块放在try{...}中
然后在try{}后接上catch(需要捕获的异常类对象){}进行捕获

多catch

catch()可以像多if-elseif一样多个串起来使用,但是要注意顺序,子类异常必须在父类异常前面被捕获
,不然永远轮不到子类捕获,无继承关系时可以随意使用,但是永远只会有一个catch代码块被运行

//误
try{
...
}catch(father e){
...
}catch(son e){
...
}
//正确
try{
...
}catch(son e){
...
}catch(father e){
...
}

同时捕获多种异常

如果多种异常的catch的代码块相同,可以如此编写

//原
try{
...
}catch(Exception1 e){
...
}catch(Exception2 e){
...
}

//同时捕获
try{
...
}catch(Exception1 | Exception2 e){
...
}

最后的收尾处理

finally语句
接在try_catch后,可有可无,但是必定会最后执行,一般用作收尾

try{
...
}catch(Exception e){
...
}finally{
...
}

一般运行时顺序:
try代码块 → finally代码块
发生异常时顺序:
try代码块 → catch捕获 → finally代码块→抛出异常
综上所述,finally代码块必定会运行,用于大清扫
如果finally代码块出现异常,则会使之前的异常被屏蔽,并抛出finally代码块中的异常

抛出异常

异常的传播:某个方法抛出异常时,如果当前方法没有捕获异常,那么就会往上层调用他的方法传递,直到遇到try-catch为止
printStackTrace()方法可以打印出方法的调用栈,输出语句从上往下看第一行是关于异常的内容的输出语句和第二行开始往下的从内到外的调用顺序

你可能感兴趣的:(java异常(Exception))