Error和Exception的区别
1)Error类:表示仅靠程序本身无法恢复的严重错误,比如说内存溢出、动态链接异常、虚拟机错误。应用程序不
应该抛出这 种类型的对象。
2)Exception类:由Java应用程序抛出和处理的非严重错误,如所需文件没有找到、零做除数、数组下标越界等。
他的各种不同子类分别对应不同类型异常。可分为两类:Checked异常和Runtime异常。
Checked异常和Runtime异常的区别
1)Runtime运行时异常: 包括RuntimeException及其所有子类。不要求程序必须对它们作出处理。即使没有
try-catch或者 throws进行处理,仍可以进行编译和运行,如果运行时发生异常,
会输出异常的堆栈信息并终止程序执行。
2)Checked非运行异常:除了运行时异常外的其它异常类都是Checked异常。程序必须捕获或者声明抛出这种
异常,否则出现编译错误,无法通过编译。处理方式包括两种:try-catch捕获异常,
通过throws声明抛出异常从而交给上一级调用方法处理。
异常处理中throws和throw的区别
1)作用不同: throw用于程序员自行产生并抛出异常;throws用于声明在该方法内抛出了异常。
2)使用位置不同:throw位于方法体内部,可作为单独语句使用;throws必须跟在方法参数列表后,不能单独使用
3)内容不同: throw抛出一个异常对象,且只能是一个;throws后面跟异常类,可以有多个。
Java异常处理try-catch-finally的执行过程
try-catch-finally程序块的执行流程以及执行结果比较复杂,基本执行过程如下:
1)程序首先执行可能发生异常的try语句块。如果try语句没有出现异常则执行完后跳至finally语句块执行;
如果try语句出现异常,则中断执行并根据发生的异常类型跳至相应的catch语句块执行处理。
2)catch语句块可以有多个,分别捕获不同类型的异常。catch语句块执行完后程序会继续执行finally语句块。
finally语句是可选的,如果有的话,则不管是否发生异常,finally语句都会被执行。
3)需要注意的是即使try和catch块中存在return语句,finally语句也会执行。是在执行完finally语句后再通过
return退出。
常见异常
运行时异常 | 检测时异常 |
InputMismatchException: 控制台输入不匹配异常
ArithmeticException: 算术计算异常。例如:除数为0
ArrayIndexOutOfBoundsException:数组下标越界
NullPointerException:空指针异常
IllegalArgumentException:方法接收到非法参数
ClassCastException:强制类型转换异常
ConcurrentModificationException:并发操作异常
|
ClassNotFoundException:无法找到类异常
SQLException:数据库操作异常。
FileNotFoundException:文件未被发现
IOException:IO异常
ParseException:解析异常
TimeoutException:超时异常
InterruptedException:中断异常。
|