java中的异常体系

Java异常处理详解

1.定义
当程序出现错误时,能够最大化的减少损失的一种保护手段
2.异常的分类
java中所有异常都是 Throwable 类的子类,关系图如下所示:
分类图
其中:
2.1 Error: 描述JVM运行时内部错误,堆、栈溢出
2.2 Exception: 程序中普遍存在的,由于代码错误产生的
2.2.1 IOException: 由于输入输出产生的异常,如打开了一个不存在的文件
2.2.2 RuntimeException: 发生在运行时的异常,如数组越界异常、类型转换异常、空指针(NPE)
:其他异常:
① 非受查异常:Error、RuntimeException及其子类。不强制用户进行异常处理
② 受查异常:除了非受查异常的所有异常。强制用户进行异常处理
3.异常的捕获
java中异常的捕获用 try 、catch 、finally。格式如下:

try
    [ catch ]
    [ catch ]
    ...
    [ finally ]

具体用法:
① try: 用于可能出现异常的代码
② catch: 当相应的异常出现,捕获该异常,并自定义解决方式
③ finally: 保证重点代码(如IO流的关闭、JDBC资源的释放等以及网络连接的关闭)一定会被执行的机制,无论是否产生异常,finally代码块中的内容一定会被执行 特例:系统退出 System.exit( ); 此情况下finally语句不执行

//异常的应用
class Person{
    public int fun(){
        System.out.println(3/1);
        try{
            System.out.println(10/0);
        }
        catch(Exception e){
            return 0;
        }
        finally{
            System.out.println("异常已经被解决");
            return 1;
        }
    }
}
public class Test{
    public static void main(String[] args) {
        new Person().fun();
    }
}

运行结果:
运行结果

//退出系统,finally语句不执行
class Person{
    public static void fun(){
        try{
            System.out.println("1");
            System.exit(0);
        }
        catch(Exception a){
            System.out.println("2");
        }
        finally {
            System.out.println("3");
        }
    }
}
public class Test{
    public static void main(String[] args) {
        new Person().fun();
    }
}

运行结果:
运行结果
4. 异常用到的关键字
4.1 throws: 用在方法声明上,明确表示该方法可能会产生异常。当异常产生时,将异常对象扔回给调用者。

public class Test {
    public static void main(String[] args) {
        try {
            System.out.println(calculate(10, 0));
        }
        catch (Exception e) {
            System.out.println("异常已解决");;
        }
    }
    public static int calculate(int x,int y) throws Exception {
        return x/y ;
    }
}

运行结果:
运行结果
4.2 throw: 用在方法中,表示人为进行异常对象的产生。一般与自定义的异常类搭配使用

public class Test{
    public static void fun(){
        throw new RuntimeException("扔个异常玩一玩");
    }
    public static void main(String[] args) {
        fun();
    }
}

运行结果:
运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值