前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java的学习笔记(16)异常处理

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

作者头像
卢衍飞
发布2023-02-13 21:31:29
2230
发布2023-02-13 21:31:29
举报
文章被收录于专栏:技术分享交流

异常处理01 Error和Exception 异常 Exception

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

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

package com.exception;

public class TEST {

代码语言:javascript
复制
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 {

代码语言:javascript
复制
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 {

代码语言:javascript
复制
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 {

代码语言:javascript
复制
//可能会存在异常的方法
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{

代码语言:javascript
复制
    //传递数字>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语句块去释放占用的资源

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023 年 01 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档