JAVA八股文:异常有哪些种类,可以举几个例子吗?Throwable类有哪些常见方法?

  • Throwable、Error 与 Exception

    • 所有的异常类型都继承自 java.lang.Throwable

    • 其中 Error(比如 OutOfMemoryErrorStackOverflowError、类加载失败等)表示 JVM 自身或运行环境的问题,不应该通常无法 由应用程序去捕获或恢复,出现 Error 通常意味着程序无法继续安全运行。

    • Exception 则代表应用层"可感知"的问题。

  • Checked Exception 与 Unchecked Exception

    • Checked Exception (受检异常)都是直接继承自 Exception不继承RuntimeException 的异常。编译器强制要求方法要么 throws 出去,让调用者去处理(声明式),要么在方法内部用 try--catch 捕获并处理,否则代码都无法通过编译。

    • Unchecked Exception (非受检异常)指的是继承自 RuntimeExceptionError 的异常,编译器不强制 你捕获或声明。最常见的如 NullPointerExceptionArrayIndexOutOfBoundsExceptionIllegalArgumentException 等。

  • 为什么要设计 Checked Exception?

    • 可恢复性 :Checked 异常通常表示"外部环境或 IO 操作"这类有可能因外部条件(文件不存在、网络中断、权限不足等)而失败的场景。这类错误是可预见有可能恢复的,Java 通过编译期强制你去"面对"这些错误------要么捕获,要么往上抛,让调用链上的某一层来决定如何恢复或提示用户。

    • 增强 API 明示性 :当一个方法声明了 throws IOException,调用者一眼就能知道"这个方法存在读写失败的风险,需要处理或传递异常",有助于写出更健壮的程序。

    • 并不是因为"底层不安全",而是因为它们涉及到对程序外部资源的访问(文件、网络、数据库、线程等待等),在这些操作中失败是常态,而不是程序 bug,需要业务层去合理应对。

Throwable类有哪些常见方法:

1.getMessage()

2.toString()

3.printStackTrace()

4.getLocalizedMessage()

  • getMessage()

    取得最初传入的错误详情(构造时的那条 String)。

    String msg = e.getMessage();

  • toString()

    默认实现返回 getClass().getName() + ": " + getMessage(),可用于快速打印异常类型和信息。

    System.out.println(e.toString());

  • getLocalizedMessage()

    可被子类覆盖,用于返回基于当前环境(如不同语言)的错误信息。

    String localMsg = e.getLocalizedMessage();

  • printStackTrace()

    将完整的异常栈信息输出到标准错误流(或指定的 PrintStream/PrintWriter),方便定位出错位置。

    e.printStackTrace(); // 默认输出到 System.err e.printStackTrace(System.out); // 输出到控制台标准输出

相关推荐
古城小栈几秒前
Java 响应式编程:Spring WebFlux+Reactor 实战
java·开发语言·spring
攻心的子乐2 分钟前
sentinel使用指南 限流/熔断 微服务 ruoyi-cloud使用了
java·开发语言
zsyy@3 分钟前
Maven本地仓库有jar还会向远程仓库下载依赖的问题
java·服务器·maven
点云SLAM4 分钟前
C++ 偏特化详解
开发语言·c++·c++模板·c++17·c++高级应用·c++偏特化·大型项目
wregjru4 分钟前
【C++】2.3 二叉搜索树的实现(附代码)
开发语言·前端·javascript
小万是个程序员10 分钟前
IDEA 配置热部署(使用idea自带功能,无需插件)
java·ide·intellij-idea
柒.梧.10 分钟前
Java核心面试题终极总结:从基础到进阶,覆盖高频考
java·开发语言·面试
计算机毕设指导611 分钟前
基于微信小程序的个性化服装搭配推荐系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
黎雁·泠崖12 分钟前
C 语言字符串入门:字符函数 + strlen 精讲(从使用到模拟实现)
c语言·开发语言
星环处相逢12 分钟前
Docker资源限制全解析:CPU、内存、磁盘IO管控与实操指南
java·开发语言