当前位置: 首页 > news >正文

Java的异常处理

  1. 常见异常
    ① 运行时异常
    a、ClassNotFoundException
    b、FileNotFoundException
    c、IOException
    ② 编译时异常
    a、ArrayIndexOutOfBoundsException
    b、NullPointerException
    c、ClassCastException
    d、InputFormatException
    e、InputMismatchException
    f、ArithmeticException

  2. try-catch-finally(抓抛模型)
    ① 抛:程序在执行的过程当中,一旦出现异常,就会在出现异常的代码处,生成对应异常类的对象,并将此对象抛出。
    ② 抓:针对于上方抛出的异常对象,进行捕获处理。
    ③ 语法格式

    try {}catch(NullPointerException e) {e.printStackTrace(); // 打印异常信息
    }catch(InputMismatchException e) {System.out.println(e.getMessage());
    }
    ...
    finally {
    }
    
  3. throws方式
    向上抛出异常,延后处理

    // 测试方法
    public void test() {// 在调用时处理异常try {method();}catch(Exception e) {}
    }
    public void method() throws 异常1,异常2{...}
    
  4. 说明
    ① 子类重写的方法抛出的异常类型可以与父类被重写的方法抛出的异常相同,或是父类被重写的方法抛出的异常类型的子类。

  5. 手动抛出异常

    class Student {int id;public void setId(int id) throws Exception {if (id > 0) {this.id = id;} else {// 手动抛出异常throw new Exception("输入格式错误");}}
    }
    public class Test {public static void main(String[] args) {try {Student s = new Student();s.setId(-5);} catch(Exception e) {System.out.println(e.getMessage()); // 打印异常message -> 输入格式错误e.printStackTrace();  // 打印异常详细信息}}
    }
    
  6. 自定义异常
    ① 继承现有异常类(RuntimeException,Exception)
    ② 依照父类,提供几个重载构造器
    ③ 提供全局常量,static final long serialVersionID;

    //自定义TestException异常类
    class TestException extends Exception {static final long serialVersionUID = 123123123L;public testException() {super();}public testException(String message) {super(message);}public testException(String message, Throwable cause) {super(message, cause);}
    }
    public class Test {public static void main(String[] args) {try{method();} catch(TestException e) {e.printStackTrace();}}public static void method() throws TestException {setTimeout(() => {throw new TestException("错误消息");}, 5000);}
    }
    
http://www.lryc.cn/news/465893.html

相关文章:

  • 免费域名邮箱申请和使用教程:有哪些步骤?
  • Linux之实战命令45:swapon应用实例(七十九)
  • 提升数据处理效率:TDengine S3 的最佳实践与应用
  • 高级算法设计与分析 学习笔记13 线性规划
  • 2024年11月软考中项应试技巧与机考注意事项!
  • 网络编程中容易踩的坑罗列,谨记!
  • SD-WAN:推动企业网络优化与发展
  • [MyBatis-Plus]扩展功能详解
  • 循序渐进丨MogDB 5.0 远程访问 MogDB/Oracle 数据库的简便方法(使用@符号)
  • 大模型训练触达「瓶颈」,基座模型厂商还有必要坚持预训练吗?
  • media3 exoplayer 扩展解码库在这里 take it , please !
  • 在Xshell中查看日志文件详情
  • 深入理解计算机系统--计算机系统漫游
  • 哪些指标可以用来评估精益生产现场管理和改善的效果?
  • 在 Linux 系统上安装免费杀毒软件
  • 第 7 章:Vue UI 组件库
  • 【SQL】SQL用户管理和权限
  • STM32应用详解(5)USART串口初始化
  • 渗透实战 JS文件怎么利用
  • 啥是CTF?新手如何入门CTF?
  • 解决python多环境冲突问题
  • Aatrox-Bert-VITS2部署指南
  • 计算不停歇,百度沧海数据湖存储加速方案 2.0 设计和实践
  • vue2项目 实现上边两个下拉框,下边一个输入框 输入框内显示的值为[“第一个下拉框选中值“ -- “第二个下拉框选中的值“]
  • el-radio 点击报错 Element with focus: inputAncestor with aria-hidden....
  • 集成平台,互联互通平台,企业大数据平台建设方案,技术方案(Word原件 )
  • 宠物用品交易网站开发:SpringBoot技术详解
  • 解构OpenAI swarm:利用Cursor进行框架分析与示例运行
  • 基于springboot的秦皇岛旅游景点管理系统 设计与实现
  • uniapp展示本地swf格式文件,实现交互