异常

异常

异常指程序运行中出现的不期而至的各种情况

发生在程序运行期间,影响了正常的程序执行流程

需要掌握的三种情况:

  1. 检查异常(非运行时异常):编译时可以看到,除了运行时异常,其他都是非运行时异常

  2. 不检查异常(运行时异常):编译时看不到,运行时才会出问题,这些异常其实就是我们的代码逻辑写错了,我们一定要手动改正

    例如:

  3. 错误(不是异常):编译时检查不到,一般不是人为导致,而是jvm的原因,其实就是人写的代码让JVM出问题

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

如图:

处理异常

  1. 抛出异常
  2. 捕获异常

五个关键字:try,catch,finally,throw,throws

//捕获异常的案例
public class lianxi {
    public static void main(String[] args) {
        int a=0;
        int b=1;
        try {//看是否有异常
            System.out.println(b/a);
        } catch (Exception e) {//捕获异常,参数为要捕获的异常类型,最大为throwable
            e.printStackTrace();//打印错误的栈信息
        } catch(Throwable t) {
            //可以有多个捕获,但要注意异常类型是由小到大
        } finally {
            //善后工作,无论是否有异常都会执行
        }
    }
}

捕获异常快捷键:选中要捕获异常的语句,Ctrl+Alt+T

//抛出异常的案例
public class lianxi {
    public static void main(String[] args) {
        try {
            new lianxi().test(1,0);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //假设方法中处理不了这个异常,则在方法上抛出异常,让调用这个方法的来捕获它
    public void test(int a,int b)throws ArithmeticException{
        if (b==0){
            throw new ArithmeticException();//主动的抛出异常,一般在方法中使用
        }
    }
}

自定义异常

使用Java内置的异常类可以描述在编程时出现的大部分异常情况,初次之外,用户还可以自定义异常,自己创建异常类,只需要继承Exception类即可

总结

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

posted on   汪汪程序员  阅读(139)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示