1.异常的分类
异常的根接口Throwable,其下有2个子接口,Error和Exception。
- Error:指的是JVM错误,这时的程序并没有执行,无法处理;
- Exception:指的是程序运行中产生的异常,用户可以使用处理格式处理。
-
三种类型的异常:
检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。 -
Java异常机制用到的几个关键字:try、catch、finally、throw、throws。
try -- 用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。
catch -- 用于捕获异常。catch用来捕获try语句块中发生的异常。
finally -- finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。
throw -- 用于抛出异常。
throws -- 用在方法签名中,用于声明该方法可能抛出的异常。主方法上也可以使用throws抛出。如果在主方法上使用了throws抛出,就表示在主方法里面可以不用强制性进行异常处理,如果出现了异常,就交给JVM进行默认处理,则此时会导致程序中断执行。
常见的异常
-
输入输出异常:IOException
-
算术异常类:ArithmeticExecption
-
空指针异常类:NullPointerException
-
类型强制转换异常:ClassCastException
-
操作数据库异常:SQLException
-
文件未找到异常:FileNotFoundException
-
数组负下标异常:NegativeArrayException
-
数组下标越界异常:ArrayIndexOutOfBoundsException
-
违背安全原则异常:SecturityException
-
文件已结束异常:EOFException
-
字符串转换为数字异常:NumberFormatException
-
方法未找到异常:NoSuchMethodException
// _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O = /O // ____/`---'\____ // . ' \| |// `. // / \||| : |||// // / _||||| -:- |||||- // | | \ - /// | | // | \_| ''---/'' | | // .-\__ `-` ___/-. / // ___`. .' /--.-- `. . __ // ."" '< `.___\_<|>_/___.' >'"". // | | : `- \`.;` _ /`;.`/ - ` : | | // `-. \_ __ /__ _/ .-` / / // ======`-.____`-.___\_____/___.-`____.-'====== // `=---=' // // ............................................. // 佛祖保佑 永无BUG // 佛曰: // 写字楼里写字间,写字间里程序员; // 程序人员写程序,又拿程序换酒钱。 // 酒醒只在网上坐,酒醉还来网下眠; // 酒醉酒醒日复日,网上网下年复年。 // 但愿老死电脑间,不愿鞠躬老板前; // 奔驰宝马贵者趣,公交自行程序员。 // 别人笑我忒疯癫,我笑自己命太贱; // 不见满街漂亮妹,哪个归得程序员?