java-Throwable——面题

Throwable类

参考链接:https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247520767&idx=2&sn=e169519ed796bcd02a65e5f344bb18d9&chksm=cea1de34f9d65722d9aa3a97df2c7c2a5819fdc6c6c726423bcf0014568e9990758d977ea113&scene=178&cur_album_id=1352302538565189634#rd

Java 异常类层次结构图概览 :

Exception 和 Error 有什么区别?

Exception 和 Error是java.lang 包Throwable(异常类)重要的子类

区别:

Exception:
程序本身可以处理的异常,可以通过 catch 来进行捕获处理
Exception 又可以分为 Checked Exception (受检查异常,必须处理) 和 Unchecked Exception (不受检查异常,可以不处理)。
Error :Error 属于程序无法处理的错误 ,我们没办法通过 catch 来进行捕获不建议通过catch捕获 。例如 Java 虚拟机运行错误(Virtual MachineError)、虚拟机内存不够错误(OutOfMemoryError)、类定义错误(NoClassDefFoundError)等 。这些异常发生时,Java 虚拟机(JVM)一般会选择线程终止。

Checked Exception(受检查异常,必须处理) 和 Unchecked Exception(不受检查异常,可以不处理) 有什么区别?

Checked Exception 即 受检查异常 ,Java 代码在编译过程中,如果受检查异常没有被 catch或者throws 关键字处理的话,就没办法通过编译。

比如进行IO操作流时可能需要处理

Unchecked Exception 即 不受检查异常 ,Java 代码在编译过程中 ,我们即使不处理不受检查异常也可以正常通过编译。
RuntimeException 及其子类都统称为非受检查异常

常见的有(建议记下来,日常开发中会经常用到)

NullPointerException(空指针错误)
IllegalArgumentException(参数错误比如方法入参类型错误)
NumberFormatException(字符串转换为数字格式错误,IllegalArgumentException的子类)
ArrayIndexOutOfBoundsException(数组越界错误)
ClassCastException(类型转换错误)
ArithmeticException(算术错误)
SecurityException (安全错误比如权限不够)
UnsupportedOperationException(不支持的操作错误比如重复创建同一用户)
......

Throwable 类常用方法有哪些?

String getMessage(): 返回异常发生时的简要描述
String toString(): 返回异常发生时的详细信息
String getLocalizedMessage(): 返回异常对象的本地化信息。使用 Throwable 的子类覆盖这个方法,可以生成本地化信息。如果子类没有覆盖该方法,则该方法返回的信息与 getMessage()返回的结果相同
void printStackTrace(): 在控制台上打印 Throwable 对象封装的异常信息

try-catch-finally 如何使用?

try块 :用于捕获异常。其后可接零个或多个 catch 块,如果没有 catch 块,则必须跟一个 finally 块。
catch块 :用于处理 try 捕获到的异常。
finally 块 :无论是否捕获或处理异常,finally 块里的语句都会被执行。当在 try 块或 catch 块中遇到 return 语句时,finally 语句块将在方法返回之前被执行。

finally 中的代码一定会执行吗?

不一定 finally 之前虚拟机被终止运行的话,finally 中的代码就不会被执行。
程序所在的线程死亡。
关闭 CPU。

posted @ 2024-04-16 18:04  渝思  阅读(4)  评论(0编辑  收藏  举报