JAVA异常处理总结

异常处理:

在写Java程序时,异常处理是比较重要的地方,所以刚刚参考书中的相关章节,把异常处理的知识系统整理了一下。

一)异常的产生:
1)在程序运行时由 Java 虚拟机创建和抛出的异常
2)在 Java 类库的函数中创建和抛出的异常
3)程序员自己的函数中创建和抛出的异常

二)抛出异常:
异常的抛出需要 throw 关键字。在定义一个函数时,如果在这个函数内部可能会抛出某种类型的异常,那么要在函数名的后面用 throws 关键词声明一下。
异常其实就是类的对象,因此可以自己定义异常类。
例如:

public class NotEnoughMoney extends Exception{
//定义了一个异常类
    public NotEnoughMoney(){}
    public NotEnoughMoney(String msg){
        super(msg);
    }
}
异常的抛出:
public static void GetMoney(int money) throws NotEnoughMoney{
    ...
    if(money>my_money)
        throw NotEnoughMoney();            //抛出异常
    ...
}
如果在定义一个函数时,声明它可能会抛出异常,就像 GetMoney(int money),那么对用调用该函数的代码来说,就必须对这个异常进行处理,否则就会编译出错。处理的方法主要有两种:
1)使用 try....catch...... 结构来捕获
public static void BuyStuff()
{
    try{
        GetMoney(200);       //调用了函数GetMoney(),该函数可能会抛出异常
        System.out.println("done\n");
    }catch(NotEnoughMoney e){
        System.out.println("error: don't have enough money!\n");
    }
}
2)不进行任何处理,重新声明抛出
public static void BuyStuff() throws NotEnoughMoney{
    GetMoney(200);            
    //调用了GetMoney()函数,该函数可能会抛出异常,在调用BuyStuff()函数的代码中重新抛出
    System.out.println("done!\n");
}
对于 try....catch...... 结构,好比是当前函数就能够拍板拿主意,所以就直接处理了;而对于 throw,好比是当前函数拿不定主意,不知如何处理,所以就把问题上报了。

三)异常的类型
1)非检查型异常
系统不要求程序捕获的异常,如数组越界、除零等,编译器在编译时不会进行检查,但在运行时,如果出现了这些情形,就会产生相应的异常。(RuntimeException及其子类)
2)检查型异常
程序必须对这种异常进行处理,要么捕获,要么抛出,否则就无法编译通过。
如 Exception, ClassNotFoundException, IOException, FileNotFoundException, EOFException





评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值