A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© invokersun 初级黑马   /  2018-11-22 14:24  /  624 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    什么是异常:
        不正常,程序出现了问题

    异常体系
        Throwable
                Error   错误,一般是一些处理不了的问题:内存不足,虚拟机问题   (绝症,治不好了)
                Exception  异常 ,可以解决的问题,今天的重点            (感冒,可以治)
                    RuntimeException  在RuntimeException体系中都是运行时异常
                    .....  在Exception中除了RuntimeException之外,其他的都是编译期异常


    异常的分类
        编译期异常:编译期不处理就不能编译通过(或者说编译期要求我们对异常进行一个预处理)
        运行时异常:编译期没有问题,但是运行之后产生的问题


        编译期异常,要求我们处理它,但是不意味着异常已经发生了。
            举例: 签合同:如果迟到罚款500(签完合同不意味着你需要缴纳500罚款,而是给一个预处理方案,如果犯错误才罚款)

    异常的处理

        抛出异常(throws)
            在方法的声明的小括号后: throws 异常类型(还可以抛出异常的父类型)

        捕获异常:try...catch
            try {
                有可能出现异常的代码;    如果出现异常了,则会产生一个异常对象
            }catch (需要捕获的异常类型  变量名) {  跟catch中的异常类型进行匹配,如果匹配上了,则会将异常对象赋值给变量
                异常的处理;  此处可以针对异常的类型给出针对性处理方案
            }

            在一个catch中可以定义多个异常,用|隔开:catch(ArrayIndexOutOfBoundsException | NullPointerException e)


            catch块中通常如何处理异常:
                1. 打印异常信息
                2. 写入错误日志
                3. 将编译期异常转换成运行时异常,让方法的调用者处理此异常。

        多异常处理
            一个try,多个catch

            注意:父类异常的catch语句必须在子类异常catch语句后面

        finally
            try {
                有可能出现异常的代码;    如果出现异常了,则会产生一个异常对象
            }catch (需要捕获的异常类型  变量名) {  跟catch中的异常类型进行匹配,如果匹配上了,则会将异常对象赋值给变量
                异常的处理;  此处可以针对异常的类型给出针对性处理方案
            } finally {
                 无论如何只要JVM还活着,此处代码就一定会执行
                 通常将一些收尾的工作,比如释放资源,放在finally中
            }

    编译期异常和运行时异常的区别解析
        只有一点区别:编译期异常必须在编译期进行处理(抛出/捕获),否则编译失败



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马