异常03:自定义异常和经验

自定义异常类

  • extends Exception

快捷方式

  1. 打开Exception类:连续点两下shift键
  2. 构造器:art+inset
  3. 选择打开栏的toString():art+inset
public class MyException extends Exception{

    //传递数字>10;
    private int detail;

    //构造器:art+inset
    public MyException(int a) {
        this.detail = a;
    }

    //toString:异常的打印信息           art+inset 选择打开栏的toString()
    @Override
    public String toString() {
        return "MyException{"  + detail + '}';
    }
}

测试自定义的异常

方法1:

public class Test {
    //可能会存在异常的方法
    //方法1
    static void test(int a){
        if(a>10){
            try{
                throw new MyException(a);
            }catch(MyException e){
                e.printStackTrace();
            }

        }
    }
}

方法二:

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

完整例子

public class Test2 {
    //方法二:
    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){//e为异常的信息(自定义的时候toString生成了异常信息,然后保存到e,catch后打印出来就行)
            //if(){}
            //对于总结的第4点,可以增加代码块处理异常,而不是单纯打印
            System.out.println("MyException=>"+e);
        }
    }
}

注意:

  • 对于总结的第4点,可以增加代码块处理异常,而不是单纯打印
  • 列如:if(){}语句按自己的要求输出提示

总结:

  1. 处理运行异常时,采用逻辑去合理规避同时辅助try-catch处理
  2. 在多重catch块后面,也可以加一个catch(Exception)来处理可能被遗漏的异常
  3. 对于不确定的代码,也可以加上try-catch,处理潜在的异常
  4. 重点:尽量去处理异常,不要只是简单地调用printStackTrace() 打印输出用快捷键Alt+Enter
  5. 具体如何处理异常,要根据不同的业务需求类型去决定(公司不同,异常不同)
  6. 尽量添加finally语句块去释放占用的资源(尤其IO流)
posted @   夜月明  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示