Java面试题目网站有哪些?( 五 )


● 第一种:当前方法知道如何处理该异常 。则用try...catch块来处理该异常 。
● 第二种:当前方法不知道如何处理 。则在定义该方法时声明抛出该异常 。
运行时异常只有当代码在运行时才发行的异常 。编译的时候不需要try…catch 。Runtime如除数是0和数组下标越界等 。其产生频繁 。处理麻烦 。若显示申明或者捕获将会对程序的可读性和运行效率影响很大 。所以由系统自动检测并将它们交给缺省的异常处理程序 。当然如果你有处理要求也可以显示捕获它们 。
3、error和exception的区别?
Error类和Exception类的父类都是Throwable类 。他们的区别如下:
● Error类一般是指与虚拟机相关的问题 。如系统崩溃 。虚拟机错误 。内存空间不足 。方法调用栈溢出等 。对于这类错误的导致的应用程序中断 。仅靠程序本身无法恢复和预防 。遇到这样的错误 。建议让程序终止 。
● Exception类表示程序可以处理的异常 。可以捕获且可能恢复 。遇到这类异常 。应该尽可能处理异常 。使程序恢复运行 。而不应该随意终止异常 。
●Exception类又分为未检查异常(UnCheckedException)和受检查的异常(CheckedException) 。运行时异常ArithmeticException 。IllegalArgumentException编译能通过 。但是一运行就终止了 。程序不会处理运行时异常 。出现这类异常 。程序会终止 。而受检查的异常 。要么用 try…catch 捕获 。要么用throws字句声明抛出 。交给它的父类处理 。否则编译不会通过 。
4、调用下面的方法 。得到的返回值是什么?
1. public int getNum() {
2. try {
3. int a = 1 / 0;
4. return 1;
5. } catch (Exception e) {
6. return 2;
7. } finally {
8. return 3;
9. }
10.}
代码走到第3行的时候遇到了一个MathException 。这时第4行的代码就不会执行了 。代码直接跳转到catch语句中 。走到第 6 行的时候 。异常机制有一个原则:如果在catch中遇到了return或者异常等能使该函数终止的话那么有finally就必须先执行完finally代码块里面的代码然后再返回值 。因此代码又跳到第8行 。可惜第8行是一个return语句 。那么这个时候方法就结束了 。因此第6行的返回结果就无法被真正返回 。如果finally仅仅是处理了一个释放资源的操作 。那么该道题最终返回的结果就是2 。因此上面返回值是3 。
5、Java 异常处理机制的理解?
Java对异常进行了分类 。不同类型的异常分别用不同的Java类表示 。所有异常的根类为 java.lang.Throwable 。Throwable下面又派生了两个子类:Error和Exception 。
Error表示应用程序本身无法克服和恢复的一种严重问题 。
Exception表示程序还能够克服和恢复的问题 。其中又分为系统异常和普通异常 。
系统异常是软件本身缺陷所导致的问题 。也就是软件开发人员考虑不周所导致的问题 。软件使用者无法克服和恢复这种问题 。但在这种问题下还可以让软件系统继续运行或者让软件死掉 。例如 。数组下标越界(ArrayIndexOutOfBoundsException) 。空指针异常(NullPointerException)、类转换异常(ClassCastException) 。
普通异常是运行环境的变化或异常所导致的问题 。是用户能够克服的问题 。例如 。网络断线 。硬盘空间不够 。发生这样的异常后 。程序不应该死掉 。
Java为系统异常和普通异常提供了不同的解决方案 。编译器强制普通异常必须try..catch处理或用throws声明继续抛给上层调用方法处理 。所以普通异常也称为checked异常 。而系统异常可以处理也可以不处理 。所以编译器不强制用try..catch处理或用throws声明 。所以系统异常也称为unchecked异常 。
6、说出最常见的5个RuntimeException?
● java.lang.NullPointerException 空指针异常;出现原因:调用了未经初始化的对象或者是不存在的对象 。
● java.lang.ClassNotFoundException 指定的类找不到;出现原因:类的名称和路径加载错误;通常都是程序试图通过字符串来加载某个类时可能引发异常 。
● java.lang.NumberFormatException 字符串转换为数字异常;出现原因:字符型数据中包含非数字型字符 。
● java.lang.IndexOutOfBoundsException 数组角标越界异常 。常见于操作数组对象时发生 。
● java.lang.IllegalArgumentException 方法传递参数错误 。
● java.lang.ClassCastException 数据类型转换异常 。
● java.lang.NoClassDefFoundException 未找到类定义错误 。
● SQLException SQL 异常 。常见于操作数据库时的 SQL 语句错误 。
● java.lang.InstantiationException 实例化异常 。

推荐阅读