• 异常系列一:基础学习笔记


    .程序的异常:Throwable
    严重问题:Error ,我们不处理。这种问题一般很严重,不如内存溢出
    问题:Exception
    编译问题:不是RuntimeException异常。必须进行处理,如果不处理编译不能通过
    运行问题:RuntimeException,这种问题也不处理。是因为代码不够严谨。需要修改代码

    .如果程序出现了问题,我们没有处理,最终Jvm会做默认处理。把异常信息打印到控制台。同时会结束程序。这对程序非常不友好,
    我们希望一块代码出现问题时,不会影响另一块代码执行。这是需要我们自己处理异常
    1.我们自己如何处理?
    方式一:
    try{
    可能出现问题的代码。 //try里面的代码越少越好
    }catch(异常名 变量){
    处理问题 //catch里必须有处理操作,否则就会把问题隐藏掉(还不如不处理呢)
    }finally{
    释放资源
    }
    当有多个异常:
    try{
    可能出现问题的代码。
    }catch(异常名1 变量){
    处理问题
    }catch(异常名2 变量){
    处理问题
    }
    JDK1.7针对多个异常处理方案:
    try{
    可能出现问题的代码。
    ...
    }catch(异常名1 | 异常名2 |... 变量){ //这几个异常必须是同一级的,都是RuntimeException的子类
    处理问题
    ...
    }


    2.在try里面发现问题后,jvm会帮我们 生成一个异常对象,然后把这个异常对象抛出,和catch里面的类进行匹配,
    如果该对象是某个类型的,就会执行该catch里面的处理信息
    例如:
    String time = "2018-01-01";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    try {
    Date date = sdf.parse(time);
    } catch (ParseException e) {
    e.printStackTrace();//我们并没有手动创建ParseException对象,说明这个e对象是jvm帮我们创建的
    }
    3.异常中的方法
    getMessage():异常的消息字符串
    例如:Unparseable date: "2018-01-01"
    toString(): 返回异常的简单信息描述
    例如:java.text.ParseException: Unparseable date: "2018-01-01"
    printStackTrace():打印异常详细信息
    例如:java.text.ParseException: Unparseable date: "2018-01-01"
    at java.text.DateFormat.parse(DateFormat.java:366)
    at com.myexception.Test.main(Test.java:15)

    4.如果我们处理不了(比如没有权限) ,就抛出去。
    代码:
    public void method() throws ParseException{
    Date date = sdf.parse(time);//对于这种编译期异常的抛出,谁调用谁去处理
    }
    //调用时必须处理
    public void methodService() throws ParseException{
    method();
    };

    public void method() throws ArithmeticException{
    ......//对于运行期异常抛出,调用时可以不用处理
    }
    //调用时可以不处理
    public void methodService(){
    method();
    };

    5.throw 和 throws区别:
    throws用在方法声明后面,跟的是异常类名。 表示可能有异常 throws Exception
    throw 用在方法体内,跟的是异常对象。表示一定抛出了某个异常 throw new Exception();

    6.finally特点:
    finally里语句一定会执行
    如果在执行finally之前jvm就退出了,那就不会执行了
    7.final, finally,
    final,关键字 : 修饰类:不可以被继承。修饰变量:变量不可被修改。修饰方法:方法不能被重写
    finally,异常处理的一部分。用于释放资源。
    finalize,是object的方法,用于垃圾回收
    8.自定义异常
    继承Exception
    继承RuntimeException

  • 相关阅读:
    Win10解决RuntimeBroker.exe后台运行CPU占比高的方法
    easyexcel测试用例
    电脑Wlan不能上网的解决办法
    [LeetCode] Delete and Earn 删除与赚取
    [LeetCode] Daily Temperatures 日常温度
    [LeetCode] 738. Monotone Increasing Digits 单调递增数字
    [LeetCode] 737. Sentence Similarity II 句子相似度之二
    [LeetCode] Parse Lisp Expression 解析Lisp表达式
    [LeetCode] Asteroid Collision 行星碰撞
    [LeetCode] 644. Maximum Average Subarray II 子数组的最大平均值之二
  • 原文地址:https://www.cnblogs.com/inspred/p/9392663.html
Copyright © 2020-2023  润新知