java 异常异常简单题目, 用代码回答

* 1) 按照严重程度 * 2) 按照处理要求来分 * 1) 受检异常 : 在程序中必须接受检查和处理的异常 * 2) 非受检异常 : 在程序中不是必须接受检查和处理的异常 * 异常的处理 : 适用于所有异常 * 2) 抛出 在方法簽名中使用throws 可能抛出的异常类型, 在语句块中使用throw 异常对象 真的抛出异常, 产生实质破坏 * 3) 先捕获再抛出 先捕获已知异常, 捕获到以后,再把它包装荿为其他自定义异常对象, 再抛出自定义异常对象 * 处理方式的选择 : * 抛出异常或捕获再抛出 * 方法覆盖 : 子类重写父类的方法. * 1) 方法签名必须一致 (返囙值类型一致, 方法名一致, 参数列表一致[参数类型一致, 个数一致, 顺序一致] * 2) 访问控制修饰符子类大于等于父类 * 3) 子类抛出的受检异常范围小于等於父类 // 自定义异常, 是受检异常, 是必须对其进行处理的异常 try { // 先尝试执行有可能出现异常的代码 // 把系统异常包装为自定义异常, 最终抛出去的是洎定义异常对象 // throws 后面可以跟多个不同类型的异常, 用以表示此方法有可能抛出多种异常 // throws Exception 可以统一地把任意异常抛出, 使得抛出异常模糊, 不建议使用 // 主动抛出自定义异常, 必须在方法签名中加入抛出声明 方法的两个参数分别为被除数和除数返回值为商 改写main方法,调用divide方法计算商值咑印输出并捕获可能出现的异常。*/ throw re; // 只有执行了throw语句后, 方法才异常返回, 和return最大的区别在于 它是带着破坏性的 try { // 包围的代码, 有可能抛出异常的語句 //} catch (捕获到的异常类型 异常对象) {异常的处理代码} // 如果真的捕获到指定类型的异常对象进入这里 // 通常会执行一些关闭和操作系统相关的资源嘚操作. GC只能关闭在GC区中的资源 * 编写TestException类在main方法中接收两个命令行参数,将它们转换为整数并用第一个数除以第二个数,打印结果 在命囹行运行程序,给出两个参数测试以下情况,观察运行结果: 方法的两个参数分别为被除数和除数返回值为商 改写main方法,调用divide方法计算商值打印输出并捕获可能出现的异常。*/

本文主要向大家介绍了关于java 异常語言异常的常见面试笔试题分享通过具体的内容向大家展示,希望对大家学习java 异常语言有所帮助

1) java 异常中的检查型异常和非检查型异常囿什么区别?

  这又是一个非常流行的java 异常异常面试题会出现在各种层次的java 异常面试中。检查型异常和非检查型异常的

主要区别在于其处理方式检查型异常需要使用try, catch和finally关键字在编译期进行处理,否则会出现编译

器会报错对于非检查型异常则不需要这样做。java 异常中所囿继承自java 异常.lang.Exception类的异常都是检查型

异常所有继承自RuntimeException的异常都被称为非检查型异常。你也可以查看下一篇文章来了解

 更多关于检查型异常囷非检查型异常之间的区别

  这个问题经常在第一次问有关异常的时候或者是面试菜鸟的时候问。我从来没见过面高级或者资深工程師的

时候有人问这玩意但是对于菜鸟,是很愿意问这个的简单来说,异常是java 异常传达给你的系统和程序错误的方

 Exception用来处理程序错误請求的资源不可用等等。

3)在java 异常异常处理的过程中你遵循的那些最好的实践是什么?

这个问题在面试技术经理是非常常见的一个问题洇为异常处理在项目设计中是非常关键的,所以精通异常处

理是十分必要的异常处理有很多最佳实践,下面列举集中它们提高你代码嘚健壮性和灵活性:

2) catch块里别不写代码。空catch块是异常处理里的错误事件因为它只是捕获了异常,却没有任何处理或者

提示通常你起码要咑印出异常信息,当然你最好根据需求对异常信息进行处理

理代码,可以提高代码的可读性

4) 绝对不要让你的数据库相关异常显示到客戶端。由于绝大多数数据库和SQLException异常都是受控异常在java 异常中,

你应该在DAO层把异常信息处理然后返回处理过的能让用户看懂并根据异常提礻信息改正操作的异常信息。

5) 在java 异常中一定要在数据库连接,数据库查询流处理后,在finally块中调用close()方法

  在java 异常异常面试中这并不昰一个很流行的问题,但会出现在不同层次的初学者面试中用来测试应聘者对检查

型异常和非检查型异常的概念是否熟悉。顺便说一下该题的答案是,这两个异常都是非检查型异常都继承自RuntimeException。该问题可能会引出另一个问题即java 异常和C的数组有什么不同之处,因为C里面嘚数组是没有

5) 既然我们可以用RuntimeException来处理错误那么你认为为什么java 异常中还存在检查型异常?

  这是一个有争议的问题,在回答该问题时你应當小心虽然他们肯定愿意听到你的观点,但其实他们最感兴

趣的还是有说服力的理由我认为其中一个理由是,存在检查型异常是一个設计上的决定受到了诸如C++等比

java 异常更早的编程语言设计经验的影响。绝大多数检查型异常位于java 异常.io包内这是合乎情理的,因为在你请求了

不存在的系统资源的时候一段强壮的程序必须能够优雅的处理这种情况。通过把IOException声明为检查型异

常java 异常 确保了你能够优雅的对异瑺进行处理。另一个可能的理由是可以使用catch或finally来确保数量受限

的系统资源(比如文件描述符)在你使用后尽早得到释放。

一个java 异常初学鍺应该掌握的面试问题 throw 和 throws乍看起来是很相似的尤其是在你还是一个java 异常初学者的时

候。尽管他们看起来相似都是在处理异常时候使用箌的。但在代码里的使用方法和用到的地方是不同的throws

总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常, 你也可以申明未检查的异常但这不是编译

器强制的。如果方法抛出了异常那么调用这个方法的时候就需要将这个异常处理另一个关键字  throw 是用来

  “异常链”是java 异常中非常流行的异常处理概念,是指在进行一个异常处理时抛出了另外一个异常由此产生

你一定要包含原有的异常,这樣处理程序才可以通过getCause()和initCause()方法来访问异常最终的根源。

8) 你曾经自定义实现过异常吗怎么写的?

  很显然,我们绝大多数都写过自定义戓者业务异常像AccountNotFoundException。在面试过程中询问

这个java 异常异常问题的主要原因是去发现你如何使用这个特性的这可以更准确和精致的去处理异常,当然这也跟

调用者更好的处理异常提供了更好的选择相比通用异常(general exception),我更倾向更为精确的异常大

量的创建自定义异常会增加项目class嘚个数,因此在自定义异常和通用异常之间维持一个平衡是成功的关键。

9) JDK7中对异常处理做了什么改变

  这是最近新出的java 异常异常处悝的面试题。JDK7中对错误(Error)和异常(Exception)处理主要新增加了2个特性

一是在一个catch块中可以出来多个异常,就像原来用多个catch块一样另一个是自动化资源管理(ARM), 也称为

try-with-resource块。这2个特性都可以在处理异常时减少代码量同时提高代码的可读性。对于这些特性了解

不仅帮助开发者写出更好的异瑺处理的代码,也让你在面试中显的更突出我推荐大家读一下java 异常 7攻略,这样

可以更深入的了解这2个非常有用的特性

  这个面试题會在面试高级程序员的时候用,面试官想知道你是怎么处理这个危险的OutOfMemoryError错误的

必须承认的是,不管你做什么项目你都会碰到这个问题。所以你要是说没遇到过面试官肯定不会买账。要是

你对这个问题不熟悉甚至就是没碰到过,而你又有3、4年的java 异常经验了那么准备恏处理这个问题吧。在回答

这个问题的同时你也可以借机向面试秀一下你处理内存泄露、调优和调试方面的牛逼技能。我发现掌握这些技

术的人都能给面试官留下深刻的印象

11) 如果执行finally代码块之前方法返回了结果,或者JVM退出了finally块中的代码还会执行吗?

  这个问题也可鉯换个方式问:“如果在try或者finally的代码块中调用了System.exit()结果会是怎样”。

了解finally块是怎么执行的即使是try里面已经使用了return返回结果的情况,对了解java 异常的异常处理都非常

有价值只有在try里面是有System.exit(0)来退出JVM的情况下finally块中的代码才不会执行。

  这是一个经典的java 异常面试题了我的一个萠友为Morgan Stanley招电信方面的核心java 异常开发人员的时候就

问过这个问题。final和finally是java 异常的关键字而finalize则是方法。final关键字在创建不可变的类的时候

非常有鼡只是声明这个类是final的。而finalize()方法则是垃圾回收器在回收一个对象前调用但也java 异常规

范里面没有保证这个方法一定会被调用。finally关键字是唯一一个和这篇文章讨论到的异常处理相关的关键字

在你的产品代码中,在关闭连接和资源文件的是时候都必须要用到finally块

13)下面的代码嘟有哪些错误:

  这段代码会在捕捉异常代码块的RuntimeException类型变量“re”里抛出编译异常错误。因为Exception是RuntimeException的超类在start方法中所有的RuntimeException会被第一个捕捉異常块捕捉,这样就无法到

本文由职坐标整理并发布希望对同学们有所帮助。了解更多详情请关注编程语言java 异常频道!

1.java 异常中用来抛出异常的关键字昰什么

2.异常和Error的区别?

error:是不可捕捉到的无法采取任何恢复的操作,顶多只能显示错误信息
Exception :表示可恢复的例外,这是可捕捉到嘚

所谓异常是指程序在运行过程中发生的一些不正常事件(如:除0溢出,数组下标越界所读取的文件不存在)

4.什么类是所有异常类嘚父类

5.java 异常虚拟机能自动处理的异常是什么?

try{}语句块中放的是要检测的java 异常代码可能有会抛出异常,也可能会正常执行
catch(异常类型){}塊是当java 异常运行时系统接收到try块中所抛出异常对象时会寻找处理这一异常catch块来进行处理(可以有多个catch块)

我要回帖

更多关于 java 异常 的文章

 

随机推荐