Java异常处理和工具类的完整教程
·
第一部分:Java异常机制详解
1. 异常类型体系
-
检查型异常(Checked Exception)
必须显式处理(如IOException)try { Files.readString(Path.of("file.txt")); } catch(IOException e) { System.err.println("文件读取失败:" + e.getMessage()); } -
非检查型异常(Unchecked Exception)
通常由程序逻辑错误引发(如NullPointerException)Object obj = null; // 以下代码会抛出 NullPointerException System.out.println(obj.toString());
2. 核心处理方案
// 多重捕获示例
try {
Integer.parseInt("abc");
} catch(NumberFormatException | NullPointerException e) {
System.out.println("数据格式异常:" + e.getClass().getSimpleName());
}
3. finally特性
- 资源关闭应用场景:
Connection conn = null; try { conn = DriverManager.getConnection("jdbc:url"); // 执行数据库操作 } catch(SQLException e) { // 异常处理 } finally { if(conn != null) conn.close(); // 确保资源释放 }
4. 异常传递控制
- 使用
throws声明:public void readFile() throws FileNotFoundException { new FileInputStream("missing.txt"); }
第二部分:自定义异常实践
1. 创建自定义检查型异常
/**
* 支付失败异常示例
*/
public class PaymentException extends Exception {
private final BigDecimal amount;
public PaymentException(String message, BigDecimal amount) {
super(message);
this.amount = amount;
}
public BigDecimal getAmount() {
return amount;
}
}
2. 使用场景示例
void processPayment(BigDecimal balance) throws PaymentException {
if(balance.compareTo(BigDecimal.ZERO) < 0) {
throw new PaymentException("余额不足", balance);
}
// 正常支付逻辑
}
第三部分:工具类设计与实现
1. 核心设计原则
- 不可实例化约束
public class EncryptionUtils { private EncryptionUtils() { // 私有构造函数 throw new AssertionError("工具类禁止实例化"); } }
2. 实用字符串工具类
/**
* 字符串处理工具集
*/
public final class StringUtils {
public static boolean isBlank(String input) {
return input == null || input.trim().isEmpty();
}
public static String reverse(String input) {
if(isBlank(input)) return "";
return new StringBuilder(input).reverse().toString();
}
// 防止实例化
private StringUtils() {}
}
3. 集合工具示例
/**
* 集合工具类
*/
public final class CollectionUtils {
public static <T> boolean isEmpty(Collection<T> coll) {
return coll == null || coll.isEmpty();
}
public static <T> List<T> filterNull(List<T> list) {
return list.stream()
.filter(Objects::nonNull)
.collect(Collectors.toList());
}
private CollectionUtils() {}
}
第四部分:实践整合实例
1. 整合场景应用
public class OrderProcessor {
void validateOrder(Order order) throws OrderValidationException {
if(CollectionUtils.isEmpty(order.getItems())) {
throw new OrderValidationException("订单商品列表为空");
}
}
public static class OrderValidationException extends Exception {
public OrderValidationException(String message) {
super(message);
}
}
}
总结
-
异常处理准则
- 优先处理具体异常类型
- 不要忽略异常(避免空
catch块) - 使用
try-with-resources简化资源管理
-
工具类最佳实践
- 确保无状态性(静态方法不依赖类状态)
- 提供完整单元测试:
@Test void testStringReverse() { assertEquals("cba", StringUtils.reverse("abc")); assertEquals("", StringUtils.reverse(null)); }
本教程覆盖了异常机制的核心要点和工具类的工程化实现方式,通过完整代码示例帮助您构建健壮的Java应用程序。实际开发时可根据项目需求扩展工具类集合和异常体系。
更多推荐

所有评论(0)