没有合适的资源?快使用搜索试试~ 我知道了~
03-Java异常面试题.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 85 浏览量
2023-08-22
22:40:01
上传
评论
收藏 221KB DOCX 举报
温馨提示
试读
21页
03-Java异常面试题
资源推荐
资源详情
资源评论
Java异常架构与异常关键字
Java异常简介
Java异常架构
1.
Throwable
2.
Error(错误)
3.
Exception(异常)
运行时异常
编译时异常
4.
受检异常与非受检异常
受检异常非
受检异常
Java异常关键字
Java异常处理
声明异常
抛出异常
捕获异常
如何选择异常类型
常见异常处理方式
直接抛出异常封
装异常再抛出捕
获异常
自定义异常
try-catch-finally
try-with-resource
Java异常常见面试题
1.
Error 和 Exception 区别是什么?
2.
运行时异常和一般异常(受检异常)区别是什么?
3.
JVM 是如何处理异常的?
4.
throw 和 throws 的区别是什么?
5.
final、finally、finalize 有什么区别?
6.
NoClassDefFoundError 和
ClassNotFoundException 区别?
7.
try-catch-finally 中哪个部分可以省略?
8.
try-catch-finally 中,如果 catch 中 return 了,
finally 还会执行吗?
9.
类 ExampleA 继承 Exception,类 ExampleB 继承
ExampleA。
10.
常见的 RuntimeException 有哪些?
11.
Java常见异常有哪些
Java异常处理最佳实践
1.
在 finally 块中清理资源或者使用 try-with-resource
语句
1.1
使用 finally 代码块
1.2
Java 7 的 try-with-resource 语法
2.
优先明确的异常
3.
对异常进行文档说明
4.
使用描述性消息抛出异常
5.
优先捕获最具体的异常
6.
不要捕获 Throwable 类
7.
不要忽略异常
8.
不要记录并抛出异常
9.
包装异常时不要抛弃原始的异常
10.
不要使用异常控制程序的流程
11.
使用标准异常
12.
异常会影响性能
13.
总结
异常处理-阿里巴巴Java开发手册
Java异常架构与异常关键字
Java异常简介
Java异常是Java提供的一种识别及响应错误的一致性机制。
Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序
健壮性。在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型回答
了“什么”被抛出,异常堆栈跟踪回答了“在哪”抛出,异常信息回答了“为什么”会抛出。
Java异常架构
1. Throwable
Throwable 是 Java 语言中所有错误与异常的超类。
Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示发生了异常情
况
。
Throwable 包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTrace() 等接口用于获取
堆
栈跟踪数据等信息。
2. Error(错误)
定义:Error 类及其子类。程序中无法处理的错误,表示运行应用程序中出现了严重的错误。
特点:此类错误一般表示代码运行时 JVM 出现问题。通常有 Virtual MachineError(虚拟机运行错
误)、NoClassDefFoundError(类定义错误)等。比如 OutOfMemoryError:内存不足错误;
StackOverflowError:栈溢出错误。此类错误发生时,JVM 将终止线程。
这些错误是不受检异常,非代码性错误。因此,当此类错误发生时,应用程序不应该去处理此类错
误。按照Java惯例,我们是不应该实现任何新的Error子类的!
3. Exception(异常)
程序本身可以捕获并且可以处理的异常。Exception 这种异常又分为两类:运行时异常和编译时异
常
。
运行时异常
定义:RuntimeException 类及其子类,表示 JVM 在运行期间可能出现的异常。
特点:Java 编译器不会检查它。也就是说,当程序中可能出现这类异常时,倘若既"没有通过throws
声明抛出它",也"没有用try-catch语句捕获它",还是会编译通过。比如NullPointerException空指针
异常、ArrayIndexOutBoundException数组下标越界异常、ClassCastException类型转换异常、
ArithmeticExecption算术异常。此类异常属于不受检异常,一般是由程序逻辑错误引起的,在程序中
可以选择捕获处理,也可以不处理。虽然 Java 编译器不会检查运行时异常,但是我们也可以通过
throws 进行声明抛出,也可以通过 try-catch 对它进行捕获处理。如果产生运行时异常,则需要通过
修
改代码来进行避免。例如,若会发生除数为零的情况,则需要通过代码避免该情况的发生!
RuntimeException 异常会由 Java 虚拟机自动抛出并自动捕获(就算我们没写异常捕获语句运行时也
会抛出错误!!),此类异常的出现绝大数情况是代码本身有问题应该从逻辑上去解决并改进代码。
编译时异常
定义: Exception 中除 RuntimeException 及其子类之外的异常。
特点: Java 编译器会检查它。如果程序中出现此类异常,比如 ClassNotFoundException(没有找到
指定的类异常),IOException(IO流异常),要么通过throws进行声明抛出,要么通过try-catch进
行捕获处理,否则不能通过编译。在程序中,通常不会自定义该类异常,而是直接使用系统提供的异
常类。该异常我们必须手动在代码里添加捕获语句来处理该异常。
4. 受检异常与非受检异常
Java 的所有异常可以分为受检异常(checked exception)和非受检异常(unchecked
exception)。
受检异常
编译器要求必须处理的异常。正确的程序在运行过程中,经常容易出现的、符合预期的异常情况。一
旦发生此类异常,就必须采用某种方式进行处理。除 RuntimeException 及其子类外,其他的
Exception 异常都属于受检异常。编译器会检查此类异常,也就是说当编译器检查到应用中的某处可
能
会此类异常时,将会提示你处理本异常——要么使用try-catch捕获,要么使用方法签名中用
throws 关键字抛出,否则编译不通过。
非受检异常
编译器不会进行检查并且不要求必须处理的异常,也就说当程序中出现此类异常时,即使我们没有try-
catch捕获它,也没有使用throws抛出该异常,编译也会正常通过。该类异常包括运行时异常
(RuntimeException极其子类)和错误(Error)。
Java异常关键字
•
try – 用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异
常
时,异常就被抛出。
•
catch – 用于捕获异常。catch用来捕获try语句块中发生的异常。
•
finally – finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网
络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者
剩余20页未读,继续阅读
资源评论
毕业程序员
- 粉丝: 8990
- 资源: 1716
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功