首页 / 面试 / 【J0008期】Java面试题库:异常
【J0008期】Java面试题库:异常
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【J0008期】Java面试题库:异常,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3262字,纯文字阅读大概需要5分钟。
内容图文
![【J0008期】Java面试题库:异常](/upload/InfoBanner/zyjiaocheng/611/e7783269f0624812ae16daeaf95c4807.jpg)
Q1:
说一下Java中的异常体系?
Q2:
Error和Exception的区别?
Error(错误):
系统中的错误,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。
Exception(异常):
表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。
Q3:
写出你最常见的 5 个 RuntimeException?
(1)java.lang.NullPointerException 空指针异常;出现原因:调用了未经初始化的对象或者是不存在的对象。
(2)java.lang.ClassNotFoundException 指定的类找不到;出现原因:类的名称和路径加载错误;通常都是程序
试图通过字符串来加载某个类时可能引发异常。
(3)java.lang.NumberFormatException 字符串转换为数字异常;出现原因:字符型数据中包含非数字型字符。
(4)java.lang.IndexOutOfBoundsException 数组角标越界异常,常见于操作数组对象时发生。
(5)java.lang.IllegalArgumentException 方法传递参数错误。
(6)java.lang.ClassCastException 数据类型转换异常。
Q4:
如何处理异常?
异常的处理方式有两种:
-
??处理。
-
向上抛, 交给调?者处理。
具体的处理方式的选择原则:
-
自己明确的知道如何处理的, 就要处理掉。
-
不知道如何处理的, 就交给调?者处理。
注:异常, 不能捕获了之后什么也不做。或者只是使?
e.printStacktrac
Q5:
try()里面有?个return语句, 那么后面的finally{}里面的代码会不会被执行?什么时候执行,return前还是return后?
如果try中有return语句, 那么finally中的代码还是会执?。
因为return表示的是要整个方法体返回, 所以,finally中的语句会在return之前执?。
但是return前执行的finally块内,对数据的修改效果对于引用类型和值类型会所不同:
1//?测试?修改值类型
2
3static?int?f()?{
4
5????int?ret?=?0;
6
7????try?{
8
9????????return?ret;??//?返回?0,finally内的修改效果不起作用
10
11????}?finally?{
12
13????????ret++;
14
15????????System.out.println("finally执行");
16
17????}
18
19}
20
21
22
23//?测试?修改引用类型
24
25static?int[]?f2(){
26
27????int[]?ret?=?new?int[]{0};
28
29????try?{
30
31????????return?ret;??//?返回?[1],finally内的修改效果起了作用
32
33????}?finally?{
34
35????????ret[0]++;
36
37????????System.out.println("finally执行");
38
39????}
40
41
Q6:
调用下面的方法,得到的返回值是什么?
1????public?int?getNum()?{
2
3????????try?{
4
5????????????int?a?=?1?/?0;
6
7????????????return?1;
8
9????????}?catch?(Exception?e)?{
10
11????????????return?2;
12
13????????}?finally?{
14
15????????????return?3;
16
17????????}
18
19????}
返回值为3。
代码在走到第 3 行的时候遇到了一个 MathException,这时第四行的代码就不会执行了,代码直接跳转到 catch语句中,走到第 6 行的时候,异常机制有这么一个原则如果在 catch 中遇到了 return 或者异常等能使该函数终止的话那么有 finally 就必须先执行完 finally 代码块里面的代码然后再返回值。因此代码又跳到第 8 行,可惜第 8 行是一个return 语句,那么这个时候方法就结束了,因此第 6 行的返回结果就无法被真正返回。如果 finally 仅仅是处理了一个释放资源的操作,那么该道题最终返回的结果就是 2。因此上面返回值是 3。
Q7:
throw 和 throws 的区别?
throw:
-
throw 语句用在方法体内,表示抛出异常,由方法体内的语句处理。
-
throw 是具体向外抛出异常的动作,所以它抛出的是一个异常实例,执行 throw 一定是抛出了某种异常。
throws:
-
throws 语句是用在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理。
-
throws 主要是声明这个方法会抛出某种类型的异常,让它的使用者要知道需要捕获的异常的类型。
-
throws 表示出现异常的一种可能性,并不一定会发生这种异常。
内容总结
以上是互联网集市为您收集整理的【J0008期】Java面试题库:异常全部内容,希望文章能够帮你解决【J0008期】Java面试题库:异常所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。