package com.student.utils; import java.io.PrintWriter; import java.io.StringWriter; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; /** * 异常处理工具类,用于统一处理系统中的异常情况 * 提供异常信息格式化和日志记录功能 */ public class ExceptionHandler { private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); /** * 处理异常并返回格式化的异常信息 * @param e 异常对象 * @return 格式化的异常信息 */ public static String handleException(Exception e) { StringBuilder message = new StringBuilder(); message.append("[错误] ") .append(getCurrentTime()) .append(" - ") .append(e.getClass().getSimpleName()) .append(": ") .append(e.getMessage()) .append("\n"); // 添加异常堆栈信息 message.append("异常堆栈:\n") .append(getStackTraceAsString(e)); // 记录到控制台 System.err.println(message.toString()); // 这里可以扩展为写入日志文件 // logToFile(message.toString()); return e.getMessage(); // 返回简洁的错误信息给用户 } /** * 获取当前时间的格式化字符串 * @return 当前时间字符串 */ private static String getCurrentTime() { return LocalDateTime.now().format(formatter); } /** * 将异常堆栈转换为字符串 * @param e 异常对象 * @return 异常堆栈字符串 */ private static String getStackTraceAsString(Exception e) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); e.printStackTrace(pw); pw.close(); return sw.toString(); } /** * 验证学生ID格式 * @param id 学生ID * @return 是否有效 */ public static boolean isValidStudentId(String id) { return id != null && !id.trim().isEmpty(); } /** * 验证学生姓名格式 * @param name 学生姓名 * @return 是否有效 */ public static boolean isValidStudentName(String name) { return name != null && !name.trim().isEmpty() && name.length() <= 20; } /** * 验证学生年龄 * @param age 学生年龄 * @return 是否有效 */ public static boolean isValidStudentAge(int age) { return age >= 1 && age <= 150; } }