本文共 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/