Java异常处理和工具类的完整教程 第一部分Java异常机制详解1. 异常类型体系检查型异常Checked Exception必须显式处理如IOExceptiontry { Files.readString(Path.of(file.txt)); } catch(IOException e) { System.err.println(文件读取失败 e.getMessage()); }非检查型异常Unchecked Exception通常由程序逻辑错误引发如NullPointerExceptionObject 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(CollectionT coll) { return coll null || coll.isEmpty(); } public static T ListT filterNull(ListT 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应用程序。实际开发时可根据项目需求扩展工具类集合和异常体系。