温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何应对运行时异常

发布时间:2026-10-06 15:46:00 来源:亿速云 阅读:93 作者:小樊 栏目:编程语言

“运行时异常”(Runtime Exception / Runtime Error)通常指程序在编译通过、但运行过程中出现的错误,比如空指针、数组越界、类型转换错误、除零、文件找不到、内存溢出等。

应对运行时异常,一般可以从 预防、捕获、排查、恢复 四个层面来做。


一、预防:写“不容易出错”的代码

很多运行时异常是可以通过编码习惯避免的。

1. 空值防护

  • 调用方法前判空
  • 使用 Optional(Java)、nullable 检查(Kotlin / Swift)
  • 不返回 null,优先返回空集合
if (user != null && user.getName() != null) {
    ...
}

2. 边界检查

  • 数组 / 列表访问前检查索引
  • 循环条件严谨
if (index >= 0 && index < list.size()) {
    list.get(index);
}

3. 输入校验

  • 参数合法性校验
  • 使用断言或校验框架
if (age < 0) {
    throw new IllegalArgumentException("age 不能为负");
}

二、捕获:用异常机制保护程序

1. try-catch(最常用)

捕获可预见的异常,避免程序崩溃。

try {
    int result = 10 / 0;
} catch (ArithmeticException e) {
    log.error("除零异常", e);
}

2. finally / try-with-resources

确保资源释放(连接、文件、线程)。

try (InputStream in = new FileInputStream("a.txt")) {
    ...
} catch (IOException e) {
    e.printStackTrace();
}

3. 全局异常处理器(Web 项目尤其重要)

  • Java:@ControllerAdvice
  • Spring Boot:@ExceptionHandler
  • 前端:window.onerror

三、排查:快速定位问题

1. 看日志(最重要)

  • 异常类型
  • 异常信息
  • 堆栈跟踪(stack trace)
NullPointerException
    at com.xxx.Service.getUser(Service.java:23)

→ 直接看“你自己的代码行号”

2. 本地复现

  • 用相同输入
  • 打开 debug 模式
  • 打印关键变量

3. 常见运行时异常速查

异常 原因
NullPointerException 调用了 null 对象
IndexOutOfBounds 下标越界
ClassCastException 类型转换错误
IllegalArgumentException 参数非法
OutOfMemoryError 内存泄漏 / 数据过大
StackOverflowError 无限递归

四、恢复:让系统“不崩”

1. 降级 / 默认值

int value = safeParse(input, 0);

2. 重试机制

  • 网络请求失败重试
  • 使用幂等设计

3. 熔断 & 限流

  • 防止一个异常拖垮整个系统
  • 如 Sentinel / Hystrix

五、一个通用处理原则 ✅

能预防的预防,能捕获的捕获,不能恢复的优雅失败。

如果你能告诉我:

  • 使用的语言(Java / Python / C++ / JS)
  • 具体异常类型或报错信息

我可以给你更针对性的解决方案。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手