Java面试题之异常部分

简介: 62、Java 中的异常处理机制的简单原理和应用?【基础】答:当 JAVA 程序违反了 JAVA 的语义规则时,JAVA 虚拟机就会将发生的错误表示为一个异常。违反语义规则包括 2 种情况。一种是 JAVA 类库内置的语义检查。例如数组下标越界,会引发 IndexOutOfBoundsException;访问 null 的对象时会引发 NullPointerException。

62、Java 中的异常处理机制的简单原理和应用?【基础】

答:当 JAVA 程序违反了 JAVA 的语义规则时,JAVA 虚拟机就会将发生的错误表示为一个异常。违反语义规则包括 2 种情况。一种是 JAVA 类库内置的语义检查。例如数组下标越界,会引发 IndexOutOfBoundsException;访问 null 的对象时会引发 NullPointerException。另一种情况就是 JAVA 允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用 throw 关键字引发异常。所有的异常都是 java.lang.Thowable 的子类。

 

63、error 和 exception 有什么区别? 【基础】

答:error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。

 

64try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally{}里的 code 会不会被执行,什么时候被执行,在 return 前还是后? 【基础】

答:会执行,在 return 前执行。

 

65、JAVA 语言如何进行异常处理,关键字:throws,throw,try,catch,finally 分别代表什么意义?在 try 块中可以抛出异常吗?【基础】

答:Java 通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在 Java 中,每个异常都是一个对象,它是 Throwable 类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java 的异常处理是通过 5 个关键词来实现的:try、catch、throw、throwsfinally。一般情况下是用 try 来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理

try 用来指定一块预防所有“异常”的程序;

catch 子句紧跟在 try 块后面,用来指定你想要捕捉的“异常”的类型;

throw 语句用来明确地抛出一个“异常”;

throws 用来标明一个成员函数可能抛出的各种“异常”;

Finally 为确保一段代码不管发生什么“异常”都被执行一段代码;

可以在一个成员函数调用的外面写一个 try 语句,在这个成员函数内部写另一try 语句保护其他代码。每当遇到一个 try 语句,“异常”的框架就放到堆栈上面,直到所有的 try 语句都完成。如果下一级的 try 语句没有对某种“异常” 进行处理,堆栈就会展开,直到遇到有处理这种“异常”的 try 语句。

 

66、运行时异常与一般异常有何异同?【基础】

答:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

 

67、给我一个你最常见到的 runtime exception?【基础】

答:ArithmeticException,ArrayStoreException,BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

 

68、final, finally, finalize 的区别? 【基础】

答:final:修饰符(关键字);如果一个类被声明为 final,意味着它不能再派生出新的子类,不能作为父类被继承,因此一个类不能既被声明为 abstract 的,又被声明为 final 的;将变量或方法声明为 final,可以保证它们在使用中不被改变;被声明为 final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改;被声明为 final 的方法也同样只能使用,不能重载。

finally:再异常处理时提供 finally 块来执行任何清除操作;如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally果有的话)。

finalize:方法名;Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

 

69、类 Example A 继承 Exception,类 ExampleB 继承 Example A;【基础】

有如下代码片断:

try{throw new ExampleB(“b”);}catch(ExampleAe){ System.out.printfln(“ExampleA”);}catch(Exceptione){System.out.printfln(“Exception”);}


输出的内容应该是:

A:ExampleAB:ExceptionC:bD:

答:输出为 A。


目录
相关文章
|
6月前
|
存储 监控 Java
Java认识异常(超级详细)
Java认识异常(超级详细)
|
3月前
|
Java 数据库连接 程序员
|
3月前
|
Java 编译器 程序员
Java面试题-异常
Java面试题-异常
48 6
|
6月前
|
Java 编译器 开发者
33、Java 异常掌握这些就够了(图解 Java 中的异常)
33、Java 异常掌握这些就够了(图解 Java 中的异常)
178 0
|
Java 程序员 编译器
Java面试题之异常部分
62、Java 中的异常处理机制的简单原理和应用?【基础】 答:当 JAVA 程序违反了 JAVA 的语义规则时,JAVA 虚拟机就会将发生的错误表示为一个异常。违反语义规则包括
38 0
|
Java 数据库连接
【Java基础】java 异常
Throwable 是 Java 语言中所有错误与异常的超类。只有当对象是此类或其子类之一的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出,才可以是 catch 子句中的参数类型。
【Java基础】java 异常
|
监控 IDE Java
【Java面试】异常常见面试题
【Java面试】异常常见面试题
391 0
|
Java 数据库连接 数据库
Java有关异常的超详细笔记
本文主要写了Java有关异常的部分,从异常的分类开始介绍包括异常的产生、传递、两种常用的处理方式、自定义异常以及异常中面试题;
100 0
|
Java 编译器 索引
java常见的异常
java常见的异常
132 0
|
Java 程序员 数据安全/隐私保护
介绍了Java中的异常
介绍了Java中的异常
介绍了Java中的异常