Java的异常处理

一、异常分类

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···catchtry···catch···finally try···finally 进行处理。

1、try···catch

2、try···catch···finally 


3、try···finally 


注:finally中可放置一些必须执行的代码,如释放内存资源的代码等。

四、抛出异常

在程序中发生异常时,可以使用try···catch处理,也可以使用throwsthrow语句将异常抛出(并在某个上层函数对这个异常进行处理)。

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、一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或子异常。


异常类的继承关系图:










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值