厦门Java培训
达内上海中山公园中心

13732203138

热门课程

Java培训完的面试:Java异常如何处理

  • 时间:2018-10-29 17:39
  • 发布:转载
  • 来源:网络

Java培训完的面试:从事Java开发的小伙伴在最初的面试时应该会经常遇到一些问题,那就是在Java面试用面试官提问的各种Java开发开发方面的问题,在Java面试问题中最常被问及的就是Java异常如何处理,本篇文章达内Java培训小编就和大家一起来探讨一下Java异常如何处理。

Java培训完的面试::Java异常如何处理

1、Java中的检查型异常和非检查型异常有什么区别?

这是一个非常流行的Java异常面试题,会出现在各种层次的Java面试中。检查型异常和非检查型异常的主要区别在于其处理方式。检查型异常需要使用try, catch和finally关键字在编译期进行处理,否则会出现编译器会报错。对于非检查型异常则不需要这样做。Java中所有继承自java.lang.Exception类的异常都是检查型异常,所有继承自RuntimeException的异常都被称为非检查型异常。

2、Java中什么是Exception?

这个问题经常在第一次问有关异常的时候或者是面试菜鸟的时候问。从来没见过面高级或者资深工程师的时候有人问这玩意,但是对于菜鸟,是很愿意问这个的。简单来说,异常是Java传达给你的系统和程序错误的方式。在Java中,异常功能是通过实现比如Throwable,Exception,RuntimeException之类的类,然后还有一些处理异常时候的关键字,比如throw,throws,try,catch,finally之类的。所有的异常都是通过Throwable衍生出来的。Throwable把错误进一步划分为 java.lang.Exception 和 java.lang.Error. java.lang.Error 用来处理系统错误,例如java.lang.StackOverFlowError 或者Java.lang.OutOfMemoryError之类的。然后 Exception用来处理程序错误,请求的资源不可用等等。

3、在Java异常处理的过程中,你遵循的最好的实践是什么?

这个问题在面试技术经理是非常常见的一个问题。因为异常处理在项目设计中是非常关键的,所以精通异常处理是十分必要的。异常处理有很多最佳实践,下面列举集中,它们提高你代码的健壮性和灵活性:

1) 调用方法的时候返回布尔值来代替返回null,这样可以NullPointerException。由于空指针是java异常里最恶心的异常。

2) catch块里别不写代码。空catch块是异常处理里的错误事件,因为它只是捕获了异常,却没有任何处理或者提示。通常你起码要打印出异常信息,当然你最好根据需求对异常信息进行处理。

3)能抛受控异常(checked Exception)就尽量不抛非受控异常(unchecked Exception)。通过去掉重复的异常处理代码,可以提高代码的可读性。

4) 绝对不要让你的数据库相关异常显示到客户端。由于绝大多数数据库和SQLException异常都是受控异常,在Java中,你应该在DAO层把异常信息处理,然后返回处理过的能让用户看懂并根据异常提示信息改正操作的异常信息。

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

4、Java中的NullPointerException和ArrayIndexOutOfBoundException之间有什么相同之处?

在Java异常面试中这并不是一个很流行的问题,但会出现在不同层次的初学者面试中,用来测试应聘者对检查型异常和非检查型异常的概念是否熟悉。顺便说一下,该题的答案是,这两个异常都是非检查型异常,都继承自RuntimeException。该问题可能会引出另一个问题,即Java和C的数组有什么不同之处,因为C里面的数组是没有大小限制的,绝对不会抛出ArrayIndexOutOfBoundException。

5、 既然朋友们可以用RuntimeException来处理错误,那么你认为为什么Java中还存在检查型异常?

Java培训完的面试:这是一个有争议的问题,在回答该问题时你要小心。虽然他们肯定愿意听到你的观点,但其实他们最感兴趣的还是有说服力的理由。其中一个理由是,存在检查型异常是一个设计上的决定,受到了诸如C++等比Java更早的编程语言设计经验的影响。绝大多数检查型异常位于java.io包内,这是合乎情理的,因为在你请求了不存在的系统资源的时候,一段强壮的程序必须能够优雅的处理这种情况。通过把IOException声明为检查型异常,Java 确保了你能够优雅的对异常进行处理。另一个可能的理由是,可以使用catch或finally来确保数量受限的系统资源(比如文件描述符)在你使用后尽早得到释放。

上一篇:在众多编程语言中,朋友为什么推荐你培训Java?
下一篇:献给Java初学者,零基础如何学Java?

Java面试中常见的10个问题(二)

Java进阶之路——从初级程序员到架构师

准备年后辞职?收好这份java面试指南

Java编程——Redis详解

选择城市和中心
贵州省

广西省

海南省