摘要:Java基础面试题以及个人总结
异常
- Exception和Error有什么区别?
Exception类和Error类有一个共同的父类Throwable类
Exception类为异常类,可以使用catch 捕获,捕获之后,Exception类又分为Checked Exception和 Uncheckend Exception
Checked Exception是捕获后必须进行处理的异常
Uncheckend Exception 是捕获后,可以不进行处理的异常
Error类是错误类
不建议用catch进行捕获,是虚拟机不能处理的错误,一般虚拟机会通过停止进程来终止
- Checked Exception和 Unchecked Exception有什么区别?
Checked exception 受检查异常,当受检查异常没有使用关键词catch和throw时,程序将不会通过编译
RuntimeException成为运行时异常,运行时异常和其子类的异常为Unchecked Exception,为不受检查的异常,异常出现即使不捕获或者抛出也可以正常通过编译
除了RuntimeException类及其子类之外的Exception类及其子类都是CheckedException
Runtime Exception的子类有:
NullPointException 空指针异常
IllegalArgumentsException 参数错误异常
NumberFormatException 字符串转换为数字格式异常
ArrayIndexOutOfExcepion 数组越界异常
ClassCastException 类型转换异常
ArithmeticException 算术异常
SecurityException 安全错误
等等
- Throwable类常用方法有哪些?
String getMessage 返回发生异常时的简要信息
String toString 返回发生异常的详细信息
String getLocalizedMessage() 返回发生异常时对象的本地化信息,当子类没有覆盖该方法的时候,返回的信息和getMessage()一样
void printStackTrace() 在控制台上打印Throwable对象封装的异常信息
- try-catch-finally如何使用
try 关键字中输入程序,捕获try语句块中的异常
catch 处理捕获的异常
finally 无论是否捕获或者处理异常,都会执行其中的程序
当try 语句块中和finall语句块中都使用了return,finally语句中return 的结果将会覆盖try语句中的结果
- finally中的语句一定会被执行吗?
当在进行finally之前,程序就已经停止的时候
程序中的所有线程都死亡的时候
cpu关闭的时候
- 异常使用有什么需要注意的地方
异常不能定义成静态变量,否则可能会引起异常栈信息错乱,每次抛出异常都是抛出new出的异常对象
抛出的异常要有意义
使用日志打印异常之后,就不要使用抛出异常
6.