Error和Exception的区别
基本概念:
Error和Exception都是继承与Throwable
Error:是一种不可预料的错误情况,这种错误发生后会导致JVM不可处理,或者不可恢复等情况
Error属于严重错误,如系统崩溃、虚拟机错误、动态链接失败等,这些错误无法恢复或者不可能捕捉,将导致应用程序中断,Error不需要捕捉。
比如OutOfMemoryError、NoClassDefFoundError等错误!!!
Exception:表示可以预料的异常,我们可以捕获这种异常,并对其进行处理
Exception:还分为检查时异常(Checked),运行时时异常(Runtime)
检查时异常:其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明
受检查的异常必须在编译时被捕捉处理,命名为 Checked Exception
是因为Java编译器要进行检查,Java虚拟机也要进行检查,以确保这个规则得到遵守.
运行时异常:需要程序员自己分析代码决定是否捕获和处理,比如 空指针,被0除...
NullPointerException ArrayIndexOutOfBoundsException InputMismatchException NumFormatException ArithmeticException ClassCastException lllegalArgumentException lllegalStateException NosuchElementExcetion
运行时处理异常的几个关键字:try catch finally throws throw
try:将可能会发生异常的代码块括起来
catch:出现异常时通过catch来进行异常处理
finally:不管发不发生异常都会执行finally中的代码
throws:表示声明异常,通常写在方法的后面 并写明异常种类
throws NullPointerException,............可以声明多个异常用逗号隔开
throw:抛出异常,并写明抛出异常的种类 throw new Exception
注意:try中也可抛出新的异常
多重catch是要遵循先子类后父类的规则,否则编译报错
有一种情况finally不会执行System.exit(0);中断程序
如果一个方法声明了异常,调用此方法时要捕获异常或者继续声明异常(也可以在try中抛出异常),否则编译错误