Java基础面试题-4day

异常

  1. Exception和Error有什么区别?

Exception类和Error类有一个共同的父类Throwable类
Exception类为异常类,可以使用catch 捕获,捕获之后,Exception类又分为Checked Exception和 Uncheckend Exception
Checked Exception是捕获后必须进行处理的异常
Uncheckend Exception 是捕获后,可以不进行处理的异常
Error类是错误类
不建议用catch进行捕获,是虚拟机不能处理的错误,一般虚拟机会通过停止进程来终止

  1. Checked Exception和 Unchecked Exception有什么区别?

Checked exception 受检查异常,当受检查异常没有使用关键词catch和throw时,程序将不会通过编译
RuntimeException成为运行时异常,运行时异常和其子类的异常为Unchecked Exception,为不受检查的异常,异常出现即使不捕获或者抛出也可以正常通过编译
除了RuntimeException类及其子类之外的Exception类及其子类都是CheckedException
Runtime Exception的子类有:
NullPointException 空指针异常
IllegalArgumentsException 参数错误异常
NumberFormatException 字符串转换为数字格式异常
ArrayIndexOutOfExcepion 数组越界异常
ClassCastException 类型转换异常
ArithmeticException 算术异常
SecurityException 安全错误
等等

  1. Throwable类常用方法有哪些?

String getMessage 返回发生异常时的简要信息
String toString 返回发生异常的详细信息
String getLocalizedMessage() 返回发生异常时对象的本地化信息,当子类没有覆盖该方法的时候,返回的信息和getMessage()一样
void printStackTrace() 在控制台上打印Throwable对象封装的异常信息

  1. try-catch-finally如何使用

try 关键字中输入程序,捕获try语句块中的异常
catch 处理捕获的异常
finally 无论是否捕获或者处理异常,都会执行其中的程序

当try 语句块中和finall语句块中都使用了return,finally语句中return 的结果将会覆盖try语句中的结果

  1. finally中的语句一定会被执行吗?

当在进行finally之前,程序就已经停止的时候
程序中的所有线程都死亡的时候
cpu关闭的时候

  1. 异常使用有什么需要注意的地方

异常不能定义成静态变量,否则可能会引起异常栈信息错乱,每次抛出异常都是抛出new出的异常对象
抛出的异常要有意义
使用日志打印异常之后,就不要使用抛出异常


来自Javaguide总结
https://javaguide.cn/home.html

你可能感兴趣的:(java,开发语言)