超神java 面试——异常相关

0x00 面试知识点总结

对于异常的一些总结

java异常原理

异常的根类为java.lang.Throwable.Throwable.

Throwable 派生两个子类:Error和Exception

Error是程序无法克服的,内存溢出,死锁。遇到只能死。

Exception分为 系统异常和普通异常

系统异常指不需要用try catch进行捕捉,编译不会出错,如:除数为0,数组越界。

普通异常指必须要用try catch 捕捉,或者throws 抛出

throw和throws的区别

throws出现在函数头,throw出现在函数体。

throws表示可能性,throw则是抛出了异常。

相同处,都是由上级调用进行处理。

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

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

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

无论是否抛出异常,finally代码块都会执行,它主要是用来释放应用占用的资源。finalize()方法是Object类的一个protected方法,它是在对象被垃圾回收之前由Java虚拟机来调用的。

常见的Exception

1.NullPointerException

空指针异常

原因

1.使用了初始化的变量
2.使用了为初始化的对象
3.使用了关键字或已存在的类名做变量

2.ArraylndexOutOfBoundsException

用非法索引访问数组时抛出的异常

3.ClassCastException

类转换异常

原因

1.强制转换时发生了这个异常
2.一个类是数字类,而由于误操作,错误的将数字类向数字类转换改写成了数字类向字符串类的转换,从而产生了异常

4.ArithmeticException

现异常的运算条件时

原因

一个整数“除以零”

5.NumberFormatException

数字格式异常

原因

当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常.

6.ClassNotFoundException

无法找到指定的类异常。

常见的Error

1.OutOfMemoryError

堆空间溢出

2.IOError

IO错误

3.VirtualMachineError

虚拟机出现错误

4.ThreadDeath

会导致该线程的run()方法突然返回来达到停止该线程的目的。

AssertionError

程序遇上了空指针

你可能感兴趣的:(Android逆向-操刀天下)