受检异常和非受检异常

异常

非受检异常和受检异常,都是继承自 Throwable 这个类中,分别是 Error 和 Exception,

  1. Error 是程序报错,系统收到无法处理的错误消息,它和程序本身无关。
  2. Excetpion 是指程序运行时抛出需要处理的异常信息如果不主动捕获,则会被 jvm 处理。

除了Error和RuntimeException以及RuntimeException的派生类以外其他异常都是受检异常。

Error和RuntimeException以及RuntimeException的派生类是非受检异常。

定义

  1. 受检异常的定义是程序在编译阶段必须要主动捕获的异常,遇到该异常有两种处理方法通过 try/catch 捕获该异常或者通过 throw 把异常抛出去
  2. 非受检异常的定义是程序不需要主动捕获该异常,一般发生在程序运行期间,比如NullPointException

优点和缺点

受检异常优点有两个:

  1. 它可以响应一个明确的错误机制,这些错误在写代码的时候可以随时捕获并且能很好的提高代码的健壮性。
  2. 在一些连接操作中,它能很好的提醒我们关注异常信息,并做好预防工作。

缺点 :
抛出受检异常的时候需要上声明,而这个做法会直接破坏方法签名导致版本不兼容。这个恶心特性导致经常使用 RuntimeException 包装。

非受检异常的好处 :
可以去掉一些不需要的异常处理代码,而不好之处是开发人员可能忽略某些应该处理的异常,导致带来一些隐藏很深的 Bug,比如流忘记关闭?连接忘记释放等。

相关推荐
金銀銅鐵1 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
福建佰胜张工1 小时前
SMC 薄型气爪 MHF2-16D1 深度解析:平行开闭、低剖面结构在自动化装配中的选型与落地
java·服务器·安全·自动化
catoop1 小时前
API Key 设计与安全生成方案:结构拆解、数据库设计与 Java 实现
java·数据库·安全
system_error_x2 小时前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
驭渊的小故事2 小时前
Spring AI Alibaba 实战:从maven依赖治理到声明式工具调用
java·人工智能·spring
Elastic 中国社区官方博客3 小时前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es
tyn1883 小时前
记录本地安装nacos服务的方法及异常
java·开发语言
步行cgn4 小时前
Spring MVC 视图机制的核心接口与类
java·开发语言·后端·spring·mvc
y1su4 小时前
Leetcode 字符串模板
java·数据结构·算法·leetcode·职场和发展·动态规划
我命由我123455 小时前
Python 开发 - Python 的 pathlib
java·开发语言·后端·python·学习·java-ee·学习方法