-
final,finally和finallize有什么区别?
① final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖、类不可被继承
② finally作为异常处理的一部分,它只能用在try、catch语句中,并且附带一个语句块,表示这段语句最终一定会执行,经常被用在释放资源的情况下。
③ finallize是Object类的一个方法,在垃圾回收器准备好释放对象占用的空间时,会先调用对象的finallize()方法,并在下一次垃圾回收动作发生时,才会真正回收对象占用的内存.
int result = 1
try{
result = 2;
return result; //复制一份result的值,检查是否有finally块
}catch(){
return 0;
}finally{
result = 3; // result为基本数据类型,改变result的值对返回结果没有影响.如果为引用类型,则会影响
syso(" execute finally1");
}
-
finally代码块中的语句是否一定会执行?
不一定.
① 当程序在进入try语句块之前就出现异常时,会直接结束,不会执行finally块中的代码
②当程序在try块中强制退出时(System.exit(0)),也不会执行finally块中的代码. -
Integer类的parseInt()会抛出NumberFormatException – 当传入的参数不能够被转成int时
-
java.lang.Throwable类是Java语言中所有错误和异常的父类.
public class Throwable extends Object implements Serializable;
public class Exception extends Throwable; -
如何捕获一个线程抛出的异常?
可以通过设置线程的UncaughtExceptionHandler(异常捕获处理方法)来捕获线程抛出的异常.
如:
Thread.UncaughtExceptionHandler handler = new Thread.UncaughtExceptionHandler(){
public void uncaughtException(Thread t,Throwable ex){
syso("Uncaught exception:" + ex);
}
};
Thread myThread = new MyThread();
//设置捕获异常的handler
myThread.setUncaughtExceptionHandler(handler);
myThread.start();
-
throw和throws的区别?
①throw语句用来抛出一个异常;通常出现在方法头;如果执行了throw,则一定抛出了某种异常
②throws是方法可能抛出异常的声明;通常出现在方法体;表示出现异常的一种可能性,并不一定会发生这些异常. -
打印异常的三种方法:
①System.out.println( e );
②System.out.println( e.getMessage() );
③e.printStackTrace(); -
开发中遇见的异常:
ArithmeticException , ArraysIndexOutOfBoundsException , NullPointerException , ClassCastExcaption ,
NumberFormatException(运行时异常) ; CloneNotSupportException , ParseException(编译异常)
错误:StackOverFlow , OutOfMemoryError