JAVA异常处理机制--让程序更加健壮!

1.异常处理的意义*

使得程序发生异常的时不会立即退出,可以继续运行后面的语句,而且可以利用catch中的语句处理异常(一般为输出异常信息)便于我们更好的运行程序修改异常

2.异常的分类

运行时异常:程序运行起来才能发现的错误,如数组下标越界,空指针等。如果出现运行时异常一定是程序员的问题
包括:RuntimeException及其子类。
RuntimeException及其子类包括:
□ ArithmeticException:数学计算异常。
□ NullPointerException:空指针异常。
□ NegativeArraySizeException:负数组长度异常。
□ ArrayOutOfBoundsException:数组索引越界异常。
□ ClassNotFoundException:类文件未找到异常。

非运行时异常(编译异常):程序运行环境导致,不是程序自身的问题 包括:
□ NoSuchMethodException:方法未找到异常。
□ IOException:输入输出异常。
□ EOFException:文件已结束异常。
□ FileNotFoundException:文件未找到异常。
□ NumberFormatException:字符串转换为数字异常。
□ SQLException:操作数据库异常

检查异常:就是非运行时异常,编译器要求你必须处理的异常
非检查异常:就是运行时异常,编译器不要求强制处理的异常。

3.异常处理的两种方式:

1)只是向上抛出,不作处理:(继续抛出,消极的方法,一直可以抛到java虚拟机来处理,就是通过throws exception抛出。)

class MyException extends Exception{//定义自己的新异常的时候是不是只要有构造函数就可以吗
    MyException (String s){//构造函数前不加public可以吗?
        super(s);
    }
}
public class Main{
    int b;
    void set(int a) throws MyException {//声明异常??表示这个类里面可以用这个异常?
        if(a==1)throw new MyException("输入的是一");
        int b=a;//有异常的话后面的语句就不会执行了
        System.out.println("此时b的值为:"+b);
        //那为什么说异常可以阻止程序非正常退出呢??
    }
    public static void main(String args[]) throws MyException {
        Main w=new Main();
        //try {
            w.set(1);//有抛出异常的语句要么就try要么就继续抛出
        //} catch (MyException e) {
           // e.printStackTrace();
       // }
        System.out.println("程序还可以运行");
    }
}

/*
输出结果:
Exception in thread "main" MyException: 输入的是一
	at Main.set(Main.java:10)
	at Main.main(Main.java:18)
	*/

2)用try…catch捕获,程序仍能继续向下运行
注意,对于检查的异常必须处理,或者必须捕获或者必须抛出


class MyException extends Exception{//定义自己的新异常的时候是不是只要有构造函数就可以吗
    MyException (String s){//构造函数前不加public可以吗?
        super(s);
    }
}
public class Main{
    int b;
    void set(int a) throws MyException {//声明异常??表示这个类里面可以用这个异常?
        if(a==1)throw new MyException("输入的是一");
        int b=a;//有异常的话后面的语句就不会执行了
        System.out.println("此时b的值为:"+b);
        //那为什么说异常可以阻止程序非正常退出呢??
    }
    public static void main(String args[]) throws MyException {
        Main w=new Main();
        try {
            w.set(1);//有抛出异常的语句要么就try要么就继续抛出
        } catch (MyException e) {
            e.printStackTrace();
        }
        System.out.println("程序还可以运行");
    }
}
/*
运行结果:
MyException: 输入的是一
	at Main.set(Main.java:10)
	at Main.main(Main.java:18)
程序还可以运行
*/


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值