Java的学习笔记(16)异常处理

异常处理01 Error和Exception
异常 Exception

三种异常:检查行异常、运行时异常、错误(错误不是异常ERROR)

异常处理02 捕获和抛出异常
5个关键字:try、catch、finally、throw、throws

package com.exception;

public class TEST {

public static void main(String[] args) {
    int a = 1;
    int b = 0;
     try{   //try监控区域
        System.out.println(a/b);
    }catch (Error e){    //cath捕获异常
         System.out.println("程序出现异常,变量b不能为0");
     }catch (Exception e){    //cath捕获异常
         System.out.println("程序出现异常,变量b不能为0");
     }catch (Throwable e){    //cath捕获异常
         System.out.println("程序出现异常,变量b不能为0");
     }finally {     //处理善后工作,也可以不需要。
         System.out.println("finally");
     }

    //catch可以有多个
    //finally 可以不要finally ,假设是IO资源,这需要finally善后工作关闭

    //快捷键:  选中想要测试的内容, CTRL + Alt + T

}

}
package com.exception;

public class TEST {

public static void main(String[] args) {
    int a = 1;
    int b = 0;
     try{   //try监控区域

         if (b==0){
             throw new ArithmeticException();  //主动抛出异常
         }
        System.out.println(a/b);
    }catch (ArithmeticException e){    //catch捕获异常   catch( 想要捕获的异常类型 )
         System.out.println("程序出现异常,变量b不能为0");
     }finally {     //处理善后工作
         System.out.println("finally");
     }

}

}
package com.exception;

public class TEST {

public static void main(String[] args) {
    try {
        new TEST().test(1,0);
    } catch (ArithmeticException e) {
        e.printStackTrace();
    }
}

//假设这方法中,处理不了这个异常。方法上抛出异常。
public  void test(int a, int b){
    if(b==0){
        throw new ArithmeticException();   //主动抛出异常,一般在方法中使用
    }
}

}
异常处理03 自定义溢出和经验小结
自定义异常类步骤:

创建自定义异常类。
在方法中通过throw关键字抛出异常对象
如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否者在方法的声明中通过throws关键字指明抛出给方法调用者的异常,继续进行下一步操作。
在出现异常方法的调用者中捕获并处理异常。
package com.exception;

public class TEST {

//可能会存在异常的方法
static void test(int a) throws MyException{
    System.out.println("传递的参数为:"+a);
    if(a>10){
        throw new MyException(a);    //抛出
    }
    System.out.println("OK");
}

public static void main(String[] args) {
    try {
        test(11);
    }catch (MyException e){
        System.out.println("MyException=>"+e);
    }
}

}
package com.exception;

//自定义的异常类,要继承Exception
public class MyException extends Exception{

    //传递数字>10
private int detail;
public MyException(int a){
    this.detail = a;
}

//toString  方法构建 快捷键  ALT+ INSERT
@Override
public String toString() {
    return "MyException{" +
            "detail=" + detail +
            '}';
}

}
经验总结

处理运行时异常,采用逻辑去合理规避同时辅助try-catch处理
在多重catch块后面,可以加一个catch (Excetion) 来处理可能会被遗漏的异常
对于不明确的代码,也可以加上try-catch,处理异常 ,也有快捷键 ALT + ENTER
尽量去处理异常,切忌只是简单地调用printStackTrace() 去打印输出
具体如何处理异常,要根据不同的业务需求和异常类型去决定
尽量添加finally语句块去释放占用的资源

原创文章:https://www.qqhhs.com,作者:起航®,如若转载,请注明出处:https://www.qqhhs.com/49.html

版权声明:本站提供的一切软件、教程和内容信息仅限用于学习和研究目的,请于下载的24小时内删除;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

Like (0)
Donate 受君之赠,荣幸之至 受君之赠,荣幸之至 受君之赠,荣幸之至 受君之赠,荣幸之至
Previous 2023年1月10日
Next 2023年1月10日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

qhhl

QQ-175142992024110802215838同号

SHARE
TOP
“人们不愿意相信,一个土匪的名字叫牧之”