异常
- 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出的异常对象
 抛出的异常要有意义
 使用日志打印异常之后,就不要使用抛出异常
来自Javaguide总结
 https://javaguide.cn/home.html