异常

  1. 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");
}
  1. finally代码块中的语句是否一定会执行?
    不一定.
    ① 当程序在进入try语句块之前就出现异常时,会直接结束,不会执行finally块中的代码
    ②当程序在try块中强制退出时(System.exit(0)),也不会执行finally块中的代码.

  2. Integer类的parseInt()会抛出NumberFormatException – 当传入的参数不能够被转成int时

  3. java.lang.Throwable类是Java语言中所有错误和异常的父类.
    public class Throwable extends Object implements Serializable;
    public class Exception extends Throwable;

  4. 如何捕获一个线程抛出的异常?
    可以通过设置线程的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();
  1. throw和throws的区别?
    ①throw语句用来抛出一个异常;通常出现在方法头;如果执行了throw,则一定抛出了某种异常
    ②throws是方法可能抛出异常的声明;通常出现在方法体;表示出现异常的一种可能性,并不一定会发生这些异常.

  2. 打印异常的三种方法:
    ①System.out.println( e );
    ②System.out.println( e.getMessage() );
    ③e.printStackTrace();

  3. 开发中遇见的异常:
    ArithmeticException , ArraysIndexOutOfBoundsException , NullPointerException , ClassCastExcaption ,
    NumberFormatException(运行时异常) ; CloneNotSupportException , ParseException(编译异常)
    错误:StackOverFlow , OutOfMemoryError

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值