ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

第一阶段 javaSE 异常

2022-05-17 13:04:36  阅读:144  来源: 互联网

标签:自定义 int 捕获 catch javaSE 异常 MyException 第一阶段


Error和Exception

异常体系结构

java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类

在java API已经定义了很多异常类,这些异常类分为两大类,错误Error和异常Exception

img

捕获和抛出异常

异常处理五个关键字:

try catch finally throw throws

 public static void main(String[] args) {
        int a=1;
        int b=0;
        //快捷键 alt + ctrl + t
        try {//try 监控区域
            System.out.println(a/b);
        }  catch (Exception e) { //cath(想要捕获的异常类型)捕获异常
            System.exit(1);//可以自定义操作
            e.printStackTrace(); //打印错误的栈信息
        } catch (Throwable e){
            //catch可以叠加,但要遵循从小到大的原则
        } finally {
            //finally 可以省去
            // 无论捕获或者没捕获到异常,都要执行
            //通常处理善后工作,比如IO流的关闭
            System.out.println("finally");
        }
    }
public static void main(String[] args) {
    int a=1;
    int b=0;
	
    //如果程序自己抛出,会终止程序,捕获方法上抛出的异常,防止程序终止,让程序可以继续运行
    try {
        new Test().test(a,b);
    } catch (ArithmeticException e) {
        e.printStackTrace();
    }

}

//如果方法中,处理不了这个异常,则在方法上抛出异常,让调用这个方法的人去捕获这个异常
public void test(int a,int b) throws ArithmeticException{
    if(b==0){
        throw new ArithmeticException(); //主动的抛出异常,一般用在方法中
    }
}

自定义异常(了解)

  • 实验java内置的异常类可以描述在编程时出现的大部分异常情况,除此之外,用户还可以自定义异常,用户自定义异常类,只需继承Exception类即可
  • 在程序中使用自定义异常类,大体可分为以下几个步骤:
  1. 创建自定义异常类
  2. 在方法中通过throw关键字抛出异常对象
  3. 如果在当时抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作
  4. 在出现异常方法的调用者中捕获并处理异常

自定义异常类:继承Exception类,自定义异常内容,实现构造方法和toString方法

public class MyException extends Exception{
    //传递数字,根据数字的大小决定是否抛出异常
    private int detail;
    //异常的构造方法
    public MyException(int detail) {
        this.detail = detail;
    }

    @Override
    public String toString() {
        return "MyException{" + detail +
                '}';
    }
}

测试异常:

//可能会存在异常的方法
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);//e就是MyException类中的toString方法的内容
    }
}

实际应用中的经验总结

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

标签:自定义,int,捕获,catch,javaSE,异常,MyException,第一阶段
来源: https://www.cnblogs.com/cigarette-lighter/p/16280372.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有