Java异常处理

异常体系

 

 

小结:
    异常是程序在编译或者运行的过程中可能出现的错误!!
    异常分为2类:编译时异常,运行时异常。
        -- 编译时异常:继承了Exception,编译阶段就报错,必须处理,否则代码不通过。
        -- 运行时异常:继承了RuntimeException,编译阶段不会报错,运行时才可能出现。
    异常一旦真的出现,程序会终止,所以要研究异常,避免异常,处理异常,程序更健壮!!

编译异常处理的三种方式

方式一

在出现编译时异常的地方层层把异常抛出去给调用者,调用者最终抛出给JVM虚拟机。
JVM虚拟机输出异常信息,直接干掉程序,这种方式与默认方式是一样的。
虽然可以解决代码编译时的错误,但是一旦运行时真的出现异常,程序还是会立即死亡!
这种方式并不好!

小结:
    方式一出现异常层层跑出给虚拟机,最终程序如果真的出现异常,程序还是立即死亡!这种方式不好!
public class Exception01{
public static void main(String[] args) throws Exception {
        System.out.println("程序开始。。。。。");
        parseTime("2011-11-11 11:11:11");
        System.out.println("程序结束。。。。。");
    }

    public static void parseTime(String date) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d = sdf.parse(date);
        System.out.println(d);

        InputStream is = new FileInputStream("E:/meinv.jpg");
    }
}

方式二

自己捕获异常和处理异常的格式:捕获处理
     try{
        // 监视可能出现异常的代码!
     }catch(异常类型1 变量){
        // 处理异常
     }catch(异常类型2 变量){
        // 处理异常
     }...

监视捕获处理异常企业级写法:
     try{
         // 可能出现异常的代码!
     }catch (Exception e){
        e.printStackTrace(); // 直接打印异常栈信息
     }
     Exception可以捕获处理一切异常类型!

小结:
    第二种方式,可以处理异常,并且出现异常后代码也不会死亡。
    这种方案还是可以的。
    但是从理论上来说,这种方式不是最好的,上层调用者不能直接知道底层的执行情况!
public class Exception02 {
    public static void main(String[] args) {
        System.out.println("程序开始。。。。");
        parseTime("2011-11-11 11:11:11");
        System.out.println("程序结束。。。。");
    }

    public static void parseTime(String date) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM-dd HH:mm:ss");
            Date d = sdf.parse(date);
            System.out.println(d);

            InputStream is = new FileInputStream("E:/meinv.jpg");
        } catch (Exception e) {
            e.printStackTrace(); // 打印异常栈信息
        }
    }
}

方式三

在出现异常的地方把异常一层一层的抛出给最外层调用者,
        最外层调用者集中捕获处理!!(规范做法)

小结:
    编译时异常的处理方式三:底层出现的异常抛出给最外层调用者集中捕获处理。
    这种方案最外层调用者可以知道底层执行的情况,同时程序在出现异常后也不会立即死亡,这是
    理论上最好的方案。

    虽然异常有三种处理方式,但是开发中只要能解决你的问题,每种方式都又可能用到!!
public class Exception03 {
    public static void main(String[] args) {
        System.out.println("程序开始。。。。");
        try {
            parseTime("2011-11-11 11:11:11");
            System.out.println("功能操作成功~~~");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("功能操作失败~~~");
        }
        System.out.println("程序结束。。。。");
    }

    public static void parseTime(String date) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy、MM-dd HH:mm:ss");
        Date d = sdf.parse(date);
        System.out.println(d);

        InputStream is = new FileInputStream("D:/meinv.jpg");
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值