1.什么是异常
java中的异常指的是程序中的异常(不包括硬件异常(内存溢出等)),比如:语法错误(少写分号),除数为0,nullPoint等。
2.为啥需要异常
谁也不想代码在运行的时候,突然程序出现问题了,这个时候就会出现,功能不稳定,数据错误显示等问题,最后导致死机,程序没有响应,开发人员也不知道怎么回事,只能通过日志去排查。所以java对异常的需要是为了解决程序的健壮性或者说鲁棒性。java中的异常不是说有了异常程序就不会出问题,而是可以让程序有异常的时候按照异常的逻辑走完,不会出现宕机等问题。
3.java对异常的解决
3.1java对异常的解决抽象成了一个Throwable异常类,根据具体情况(硬件异常还是程序异常)又分为 Error 和Exception 两个子类,程序异常(Exception)根据运行时异常和非运行是异常分为 RuntimeException 和 非运行时异常(继承Exception的异常)。
3.2 大家都知道类是对拥有相同属性和行为对象的抽象模板,在程序运行过程中必须通过具体的对象才能完成具体任务,这个时候就得说说异常对象的创建了。java异常对象的创建分为两种方式:1.一种是程序运行时环境自动抛出的异常,这些异常不需要我们使用 throw 关键字就可以自己抛出。2:程序员根据具体情况自定义的异常,使用 throw new 异常 的方法抛出异常对象。
3.3 关于java异常类的具体实现以及使用可以查看api;
4.java 异常机制
try {
//正常运行代码
} catch (Exception e) {
//捕获异常后执行的代码
e.printStackTrace();
} finally {
//最终执行(是否有异常)
}
4.1 以上就是java 异常机制。个人感觉书上说的太啰嗦。
4.2 除了上面的 try catch finally 外还有两个关键字: throw 和 throws
throw :用于方法体内,抛出 Throwable 类的异常对象。如果抛出的是运行时异常,该方法也必须在方法头部声明抛出的异常类型。调用该方法者也必须捕获处理或者抛出该异常,如果所有方法都没有捕获处理抛出给虚拟机,则由虚拟机处理异常。
throws : 用于方法体声明部分,用来声明可能会抛出的异常类型。如果声明的是运行时异常,则调用该方法的方法必须自己处理或者继续抛出异常。
4.3 throw 和 throws 的区别和联系:
throw 是语句抛出异常一个异常,如: throw new RuntimeException;
throws 是方法抛出一个异常。
很明显,throw 抛出异常后由 throws 转化为方法异常继续抛出
throw 不能单独使用,throws 却可以。
5.用户自定义异常
继承Exception 或者RuntimeException 异常类就可以实现自定义异常。
重新或者覆盖父异常类的方法可以实现自己想要的结果。
通过 new throw myException;来使用异常。
异常总结完了。!!!