JAVA 异常 简单问题

JAVA语言如何进行异常处理?

答: Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。

 

关键字: throws,throw,try,catch,finally分别代表什么意义?

 Java的异常处理是通过5个关键词来实现的: try、 catch、 throw、 throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。

用try来指定一块预防所有"异常"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。

throw语句用来明确地抛出一个"异常"。

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

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

 

在try块中可以抛出异常吗?

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

 

 

运行时异常与一般异常有何异同

答: 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常

见运行错误。 java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行

时异常。

 

error和exception有什么区别

答: error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情

 

 

最常见到的runtime exception

答: 常见的运行时异常有如下这些

ArithmeticException,

IllegalArgumentException

NullPointerException,

SystemException,

 

try {}里有一个return语句,那么紧跟在这个try后的finally{}里的code会执行吗?

try {}里有一个return语句,那么紧跟在这个try后的finally{}里的code会执行,在return前执行(准确的说是return执行过,但是return的值保留,不管finally怎么改变,依旧返回该值)

PS:Finally里面如果也有return,会将try,catch里面的return覆盖掉导致程序提前退出

 

 

异常处理完成以后,Exception 对象会发生什么变化?

Exception 对象会在下一个垃圾回收过程中被回收掉。

 

 

finally 代码块和 finalize()方法有什么区别?

无论是否抛出异常,finally 代码块都会执行,它主要是用来释放应用占用的资源。

finalize()方法是 Object 类的一个 protected 方法,它是在对象被垃圾回收之前由 Java 虚拟机来调用

你可能感兴趣的:(java基础)