一、异常分类
Java中可以捕获的异常(即Exception类的子类)分为可控式异常和运行时异常。
可控式异常:
运行时异常:
二、获取异常信息
Java中java.lang.Throwable类是所以异常类的超类,它提供了获取异常信息的方法。
例如:
public class Example_0{
public void printInfo(){
try{
int x = 100;
int y = 0;
int z = z / y; //除0错误
}catch(Exception ex){ //通过Exception类的对象ex来获取异常信息
ex.printStackTrace();
System.out.println("getMessage 方法: " + ex.getMessage());
}
}
public static void main(String[] args){
Example_0 e = new Example_0();
e.printInfo();
}
}
三、处理异常
在Java中发生异常时,可通过try···catch、try···catch···finally 或 try···finally 进行处理。
1、try···catch
2、try···catch···finally
3、try···finally
注:finally中可放置一些必须执行的代码,如释放内存资源的代码等。
四、抛出异常
在程序中发生异常时,可以使用try···catch处理,也可以使用throws或throw语句将异常抛出(并在某个上层函数对这个异常进行处理)。
1、throws
当某个方法中可能存在异常,却不想在这个方法中对异常处理时,就可以在声明方法时使用throws。
格式:
例如:
public void showInfo() throws Exception{ //抛出该方法中出现的异常
FileInputStream in = new FileInputStream("C:/Record.txt");
}
void methodName(){
try{
showInfo();
}catch(Exception ex){ //对showInfo方法抛出的异常进行处理
System.out.println(ex.getMessage());
}
}
2、throw在通常情况下,程序发生错误时系统会自动抛出异常,而有时希望程序自行抛出异常,可以用throw语句(通常与if一起使用)来实现。
例如:
public class Example_1{
public void test(int r) throws Exception{
if (r < 20){
throw new Exception("程序异常:r不能小于20");
}else{
System.out.println("输入正确");
}
}
public static void main(String[] args){
Example_1 e = new Example_1();
try{
e.test(10);
}catch(Exception ex){
System.out.println(ex.getMessage());
}
}
}
五、自定义异常
TODO.
六、异常的使用原则
1、不要过多地使用异常,这样会增加系统的负担。
2、在方法中使用try catch时,要对异常做出处理。
3、try catch语句块的范围不要太大,这样不利于对异常的分析。
4、一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或子异常。
异常类的继承关系图: