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

简介: 异常处理01 Error和Exception异常 Exception三种异常:检查行异常、运行时异常、错误(错误不是异常ERROR)异常处理02 捕获和抛出异常5个关键字:try、catch、finally、throw、throwspackage com.exception;public class TEST { public static void main(String[] args) { int a = 1; int b = 0; try{ //try监控区域 System.out.

异常处理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 自定义溢出和经验小结

自定义异常类步骤:

  1. 创建自定义异常类。
  2. 在方法中通过throw关键字抛出异常对象
  3. 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否者在方法的声明中通过throws关键字指明抛出给方法调用者的异常,继续进行下一步操作。
  4. 在出现异常方法的调用者中捕获并处理异常。
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 +
                '}';
    }
}

经验总结

  1. 处理运行时异常,采用逻辑去合理规避同时辅助try-catch处理
  2. 在多重catch块后面,可以加一个catch (Excetion) 来处理可能会被遗漏的异常
  3. 对于不明确的代码,也可以加上try-catch,处理异常 ,也有快捷键 ALT + ENTER
  4. 尽量去处理异常,切忌只是简单地调用printStackTrace() 去打印输出
  5. 具体如何处理异常,要根据不同的业务需求和异常类型去决定
  6. 尽量添加finally语句块去释放占用的资源
相关文章
|
2月前
|
安全 Java
Java异常处理:程序世界的“交通规则
Java异常处理:程序世界的“交通规则
335 98
|
2月前
|
安全 Java 编译器
驾驭Java异常处理:从新手到专家的优雅之道
驾驭Java异常处理:从新手到专家的优雅之道
221 59
|
6月前
|
Java API 微服务
2025 年 Java 从入门到精通学习笔记全新版
《Java学习笔记:从入门到精通(2025更新版)》是一本全面覆盖Java开发核心技能的指南,适合零基础到高级开发者。内容包括Java基础(如开发环境配置、核心语法增强)、面向对象编程(密封类、接口增强)、进阶技术(虚拟线程、结构化并发、向量API)、实用类库与框架(HTTP客户端、Spring Boot)、微服务与云原生(容器化、Kubernetes)、响应式编程(Reactor、WebFlux)、函数式编程(Stream API)、测试技术(JUnit 5、Mockito)、数据持久化(JPA、R2DBC)以及实战项目(Todo应用)。
388 5
|
5月前
|
Java 编译器 数据库连接
Java异常处理:写出更健壮的代码
Java异常处理:写出更健壮的代码
207 0
|
3月前
|
小程序 Java 知识图谱
Java 学习笔记 —— BMI & BMR 计算器
这是一个使用 Java 编写的 BMI 与 BMR 计算器小程序,可输入年龄、性别、身高和体重,计算身体质量指数(BMI)和基础代谢率(BMR),并输出健康评估结果。通过该项目,掌握了 Java 的输入处理、数据验证、条件判断、数学运算及格式化输出等基础知识,是 Java 初学者的理想练习项目。
|
3月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
9月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
184 13
|
4月前
|
Java 数据库 C++
Java异常处理机制:try-catch、throws与自定义异常
本文深入解析Java异常处理机制,涵盖异常分类、try-catch-finally使用、throw与throws区别、自定义异常及最佳实践,助你写出更健壮、清晰的代码,提升Java编程能力。
|
7月前
|
Java
java 多线程异常处理
本文介绍了Java中ThreadGroup的异常处理机制,重点讲解UncaughtExceptionHandler的使用。通过示例代码展示了当线程的run()方法抛出未捕获异常时,JVM如何依次查找并调用线程的异常处理器、线程组的uncaughtException方法或默认异常处理器。文章还提供了具体代码和输出结果,帮助理解不同处理器的优先级与执行逻辑。
186 1
|
9月前
|
运维 Java 程序员
Java中的异常处理方法
本文深入剖析Java异常处理机制,介绍可检查异常、运行时异常和错误的区别与处理方式。通过最佳实践方法,如使用合适的异常类型、声明精确异常、try-with-resources语句块、记录异常信息等,帮助开发者提高代码的可靠性、可读性和可维护性。良好的异常处理能保证程序稳定运行,避免资源泄漏和潜在问题。
291 5