博客
关于我
JAVA异常和基础类库
阅读量:532 次
发布时间:2019-03-09

本文共 1932 字,大约阅读时间需要 6 分钟。

Java异常处理详解

1. 异常的定义与分类

在Java编程中,执行可能导致程序中断运行的错误称为异常。异常可以分为两大类:

  • 可查异常:俗称 checked exceptions,通常由编程错误或环境异常引起,可通过catch语句进行处理。
  • 不可查异常(RuntimeException及其子类):类似 NullPointerException、ArithmeticException 等,属于程序逻辑上的错误,无法通过try-catch捕获。

2. try-catch-finally 结构

try语句用于包裹可能抛出异常的代码块。一个try可以对应多个catch,用于捕获不同类型的异常。例如:

try {    // 可能抛出异常的代码} catch (IOException e) {    System.out.println("输入错误:" + e.getMessage());} catch (ClassNotFoundException e) {    System.out.println("文件格式错误:" + e.getMessage());} finally {    System.out.println("使用完成");}

注意事项:

  • catch 和 finally 可有可无,但如果try 没有 catch,finally 必须有。
  • finally 保障了资源释放和其他必要操作的执行,无论是否抛出异常或返回。

3. 异常的定义与抛出

Throwable 类是异常的根源类,所有异常都继承自它。开发自定义异常类时,可选择继承 Exception 或直接 Throwable,根据需要重写 getMessage 方法。

public class MyException extends Exception {    private String message;    public MyException(String message) {        super(message);        this.message = message;    }        @Override    public String getMessage() {        return message;    }}

4. throw 与 throws 的区别

  • throw:用于在当前方法或语句内对异常进行处理,必须 catch 或抛出自己定义的异常。
  • throws:声明方法可能抛出的异常,通常用于向上级方法抛出异常,外区方法需处理。

5. Throwable 与 Exception 的关系

  • Throwable 是父类,Exception 是子类。
  • Throwable 用于定义所有可抛出异常,Exception 专指程序本身可以处理的异常(如IO操作异常)。
  • 通过 Throwable 接收所有异常类型,Exception 是更常见的异常类型。

6. 异常的抛出顺序

Java 严格按照异常抛出顺序和catch块的结构进行处理,确保 catch 处理异常的顺序正确。

7. 常用类包说明

  • java.lang:核心Java类,包含基本数据类型、String、Object等。
  • java.io:I/O操作相关类,如File、InputStream等。
  • java.util:集合、枚举、事件等工具类。

8. String 类操作

  • String 按字面值常量生成,不可修改。
  • StringBuffer 和 StringBuilder 都继承 String buffer,前者线程安全但效率较低,后者线程不安全但更高效。
  • 如需读取用户输入,使用 readline 方法,而非 next,避免空格或回车影响结果。

9. Mathematical 类方法

  • random() 生成随机数。
  • pow() 计算指数。
  • sqrt() 计算平方根。
  • abs() 取绝对值。
  • max()、min() 求最大值、最小值。

10. java.util.Date 与日期操作

  • after(Date d) 判断当前日期是否在指定日期之后。
  • before(Date d) 判断当前日期是否在指定日期之前。
  • compareTo(Date d) 比较两个日期的时间顺序。
  • getTime() 返回从1970年1月1日开始的毫秒数。

11. 数据类型与包装类

  • 扩展了基础数据类型的对象特性,便于集合操作等场景。
  • 包装类包括 Integer、Long、Double 等,BigInteger、BigDecimal 主要用于高精度计算。

将这些知识点有序阐述,便于理解与应用。

转载地址:http://hbwsz.baihongyu.com/

你可能感兴趣的文章
Problem C. Dynamic Graph Matching [状态压缩DP]
查看>>
ZOJ Problem Set - 2675 Little Mammoth[圆与多边形交]
查看>>
Good Luck in CET-4 Everybody! HDU - 1847 [博弈树,BASH博弈]
查看>>
HashMap集合原理
查看>>
MySQL数据库安装及主从复制搭建
查看>>
痞子衡嵌入式:极易上手的可视化wxPython GUI构建工具(wxFormBuilder)
查看>>
痞子衡嵌入式:微处理器CPU性能测试基准(Dhrystone)
查看>>
痞子衡嵌入式:语音处理工具pzh-speech诞生记(2)- 界面构建(wxFormBuilder3.8.0)
查看>>
痞子衡嵌入式:我当选了2019年度官方论坛i.MXRT板块的顶级贡献者
查看>>
痞子衡嵌入式:盘点国内RISC-V内核MCU厂商(2020年发布产品)
查看>>
痞子衡嵌入式:分享一个i.MXRT系列配套DRAM压力测试上位机工具(i.MXRT DRAM Tester)...
查看>>
Mysql-缓存
查看>>
09-【继承、抽象类】
查看>>
25-【JDBC】
查看>>
Struts2-从值栈获取list集合数据(三种方式)
查看>>
LeetCode 两数之和
查看>>
98-对选择排序算法的实现和分析
查看>>
101-浅谈指针
查看>>
134-C++学习第八弹(重载)
查看>>
154-删除链表中重复元素(只保留出现一次的元素)
查看>>