程序员如何做「错误处理」:不是崩溃,是优雅

程序员如何做「错误处理」:不是崩溃,是优雅

程序出错是必然的。

错误处理做得好,用户感受不到问题;做得不好,用户看到的是崩溃。


一、错误处理的分层

1. 预防

尽量在源头阻止错误。

2. 捕获

捕获后记录日志。

3. 恢复

出错后尽量恢复正常。


二、Java 的异常体系

受检异常(Checked Exception)

必须捕获或声明抛出。

如:IOException、SQLException

非受检异常(Unchecked Exception)

可以不捕获。

如:NullPointerException、IllegalArgumentException

最佳实践


三、错误处理的最佳实践

1. 不要返回 null

返回 null 调用方容易忽略。

2. 尽早失败

校验前置,不要等到中间才发现。

// 好的写法
validate(user);
save(user);

// 不好的写法
save(user); // 如果user无效,到这里才发现

3. 给明确的错误信息

"系统错误" → "用户不存在,请检查输入"

4. 记录日志


四、全局异常处理

Spring Boot

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    public Response handle(Exception e) {
        log.error("系统异常", e);
        return Response.error("系统异常");
    }
}

前端


五、一句话总结

错误处理 = 预防 + 捕获 + 恢复 + 明确信息 + 记录日志

/*]]>*/