异常
认识异常
- 什么是异常?
异常代表程序中出现的问题.
Exception代表可以捕获一切异常
- 异常的体系
Error:代表的系统级别错误(属于严重问题),也就是说系统一旦出现问题,sun公司会把这些问题封装成Error对象给出来, 说白了,Error是给sun公司自己用的,不是给我们程序员用的,因此我们开发人员不用管它。 Exception:叫异常,它代表的才是我们程序可能出现的问题,所以,我们程序员通常会用Exception以及它的孩子来封装程序出现的问题。
- 运行时异常:RuntimeException及其子类,编译阶段不会出现错误提醒,运行时出现的异常(如:数组索引越界异常)
- 编译时异常:编译阶段就会出现错误提醒的。(如:日期解析异常)
小结
- 异常是什么?
异常是代码在编译或者执行的过程中可能出现的错误。 - 异常的代表是谁?分为几类?
Exception,分为两类:编译时异常、运行时异常。
编译时异常:没有继承RuntimeExcpetion的异常,编译阶段就会出错。
运行时异常:继承自RuntimeException的异常或其子类,编译阶段不报错,运行时出现的。 - 异常的作用是什么?
编译时异常:编译阶段给程序员强烈提醒,此处代码可能会出现问题 .
运行时异常:在运行阶段给程序员提醒,某处代码出现问题,需要改正
异常的处理 throws ,throw , try-catch
开发中对于异常的常见处理方式:
1.自己代码中,底层方法出现的异常,抛出给上一级处理
2.异常抛出到自己代码的最顶层,开始捕获异常。捕获异常后,可以记录并响应合适的信息给用户,也可以尝试重新修复.
抛出异常(throws,throw):
- 在方法上使用throws关键字,声明方法可能出现的异常,提醒方法调用者注意。假设方法内真的出现异常,则将异常对象交由方法调用者处理;
方法 throws 异常1 ,异常2 ,异常3 ..{
…
// 推荐方式
方法 throws Exception{}
// Exception代表可以捕获一切异常
- 在代码中使用throw关键字,可以抛出一个异常对象。在抛出异常对象的位置,需要考虑使用throws或者try catch处理异常对象
throw 异常对象:
// 抛出一个空指针异常对象
throw new PointerException();
- 捕获异常(try…catch)
直接捕获程序出现的异常
try{
// 监视可能出现异常的代码!
}catch(异常类型1 变量){
// 处理异常
}catch(异常类型2 变量){
// 处理异常}...
// 推荐方式
try{
// 可能出现异常的代码!
}catch (Exception e){
// 直接打印异常对象的信息
e.printStackTrace();
}
自定义异常
Java无法为这个世界上全部的问题都提供异常类来代表, 如果企业自己的某种问题,想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类了。