异常相关总结

关于异常的概述

异常是Java中提供的一种识别及响应错误情况的一致性机制,有效的异常处理可以使程序更具健壮性

异常发生的原因 >  用户输入了非法数据

                          >  要打开的文件不存在

                          >  网络通信时连接中断

                          >  JVM内存溢出

                          >   某些物理错误

异常的继承体系

Exception

概述

Exception是所有异常类的父类,它又分为运行时异常和非运行时异常

非运行时异常 : 是在编译阶段发生的异常

运行时异常 : 是在程序运行时发生的异常,一般是由于程序员的粗心导致的

try...catch

用 try{ } 包裹可能发生异常的语句

用 catch 进行对应异常的处理

如果try中发生的异常,就转去catch

        int a = 10;
        int b = 0;
        try {
            System.out.println(a / b);
        }catch (Exception e){
            System.out.println("除数不能为0");
        }

在执行过程中 如果有语句发生了异常,那么此语句之后的语句都不会被执行,而是取执行catch中的语句
如果没有发生异常,那么就不会执行catch中的语句

        int a = 10;
        int b = 0;
        try{
            System.out.println(1);
            System.out.println(2);
            System.out.println(a / b);
            //在执行过程中 如果有语句发生了异常 那么此语句之后的语句都不会被执行 而是取执行catch中                
            //的语句
            //如果没有发生异常 那么就不会执行catch中的语句
            System.out.println(3);
            System.out.println(4);
        }catch (ArithmeticException e){

            //获取错误信息  一般用于反应给客户
            System.out.println("输入错误: " + e.getMessage());

            //获取错误的详细栈帧  一般用于程序员排查错误
            e.printStackTrace();
        }

throws

throws只能抛出异常,但不会处理异常,抛出的异常交由调用它的地方

    public static void main(String[] args) {
        try {
            m1();
        }
        catch (Exception e){
            System.out.println("发现异常");
            e.printStackTrace();
        }
    }

    public static void m1() throws Exception{
        m2();
    }
    public static void m2() throws Exception{
        m3();
    }
    public static void m3() throws Exception{

    }
}

finally

finally{} : 必须执行的代码块  除了使用System.exit()关闭JVM虚拟机的情况,finally一定会执行
               一般用于关闭一些资源

finally不能单独使用  需要与try  或  try...catch 搭配使用

    public static void main(String[] args) {
        try {
            System.out.println("我是try");
        }catch (Exception e) {
            System.out.println("我是catch");
        }
        finally {
            System.out.println("我是finally");
        }
    }
    
    //运行结果为  我是try
    //           我是finally

自定义异常类

自定义一个异常类并集成于某个原有的异常类

例如 定义一个游戏角色生命值相关的异常类

public class NoLifeValueException extends RuntimeException {

    public NoLifeValueException() {
    }

    public NoLifeValueException(String message) {
        super(message);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值