异常的分类
- java中的所有异常都是继承自Throwable类的,Throwable的下一层为Error类和Exception类;其中Error类代表运行过程中比较严重的问题,大多数是我们程序员能力范围之外的问题,例如虚拟机运行错误,内存资源不足等,这些问题一般在我们的开发过程中不应该出现,如果在正式使用的过程中出现了这种异常,就只能通知用户和尽力使程序安全地终止;而Exception类下面又有两个分支,一个是RuntimeException,运行时异常,该类异常java没有要求我们一定要处理,所以被称为是unchecked异常,通过规范的代码可以避免这种异常的产生;而另一种Exception则是被称为checked异常,该类异常java要求必须处理,要么使用try…catch或者使用throws声明,如果不处理的话就会编译报错
异常捕获处理
- try, catch & finally
- try里面包含了可能会产生异常的代码
- 当产生了异常之后,之后的代码不会继续执行,而是会马上跳转到相应的catch语句中
- 不论有没有产生异常,finally中的语句都会执行
- 异常捕获的顺序
- 一般子类异常的捕获要在父类异常的捕获之前
- 如果反过来,例如IOException是FileNotFoundException的父类,如果先捕获了IOEXception,那么之后对于其子类异常的捕获都不会执行,所以再添加catch语句来捕获FileNotFoundException就没有任何意义
throws抛出处理
- 意为谁调用这个方法,谁就负责处理该异常
- 在方法体中调用throw语句抛出异常,在方法定义中添加throws声明该异常,提醒该方法的使用者,有异常需要处理
- 那么在调用该方法的时候,一般最好就对该异常进行捕获处理(因为我们调用了该方法,就应该负责该异常的处理)
异常的常用方法
- getMessage() & printStackTrace() 打印和获得异常信息
- https://blog.csdn.net/smilehappiness/article/details/106310868?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242
- https://www.imooc.com/article/275564#java
- https://blog.csdn.net/weixin_35682327/article/details/114069834
- https://xiaoer.blog.csdn.net/article/details/80773970?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EsearchFromBaidu%7Edefault-1.pc_relevant_baidujshouduan&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EsearchFromBaidu%7Edefault-1.pc_relevant_baidujshouduan