【面试题】Java基础篇-常见面试题总结p3

本文介绍了Java中的异常处理结构(try-catch-finally),区分了Error和Exception,包括运行时异常与非运行时异常的区别,throw和throws的使用,try-with-resources的便利性,以及序列化与反序列化原理和transient关键字的运用。
摘要由CSDN通过智能技术生成
  • https://javaguide.cn/java/basis/java%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E6%80%BB%E7%BB%93/
  • https://pdai.tech/

注意:

如果本文中有错误的地方,欢迎评论区指正!🍭

1.说一下try-catch-finally各个部分的作用?


  • try块: 用于捕获异常。其后可接零个或多个 catch 块,如果没有 catch 块,则必须跟一个 finally

  • catch块: 用于处理 try 捕获到的异常

  • finally 块: 无论是否捕获或处理异常,finally 块里的语句都会被执行。当在 try 块或 catch 块中遇到 return 语句时,finally 语句块将在方法返回之前被执行

👨‍💻面试官又问:finally是不是一定会被执行到?

不一定的。在在以下 3 种特殊情况下,finally 块不会被执行:

  1. tryfinally块中用了 System.exit(int)退出程序。但是,如果 System.exit(int) 在异常语句之后,finally 还是会被执行

  2. 程序所在的线程死亡

  3. 关闭 CPU

👨‍💻面试官继续追问:ftry-catch-finally中那个部分可以省略?

catch可以省略。

try 只适合处理运行时异常,try+catch 适合处理运行时异常+普通异常。

也就是说,如果你只用try去处理普通异常却不加以catch处理,编译是通不过的,因为编译器硬性规定,普通异常如果选择捕获,则必须用catch显示声明以便进一步处理。而运行时异常在编译时没有如此规定,所以catch可以省略

2.说说Error 和 Exception 的区别?


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7qu6dIKI-1640303890477)(【面试题】Java基础篇-常见面试题总结p3.assets/Java异常类层次结构图.png)]

Error类和Exception类的父类都是Throwable类。主要区别如下︰

  • Error类

表示JVM 无法处理的错误,我们没办法通过 catch 来进行捕获 。例如,Java 虚拟机运行错误虚拟机内存不够错误类定义错误等 。这些异常发生时,Java 虚拟机(JVM)一般会选择线程终止

  • Exception类

程序本身可以处理的异常,可以通过 catch 来进行捕获。Exception 又可以分为 受检查异常(必须处理) 和 不受检查异常(可以不处理)

👨‍💻面试官追问:受检查异常和不受检查异常有什么不同?

  • 受检查异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值