Java异常1.概念理解
异常(Exepotion)指程序运行过程中不期而至的各种状况,它阻止了程序按照程序员的预期正常执行,这就是异常(开发过程中的语法错误和1.逻辑错误不是异常)。如文件找不到,网络连接失败,非法参数等。
异常发生在程序运行期间,影响程序的正常执行。
2.常见异常分类
检查性异常:在编译时期可以发现的异常,最常见的检查型异常是用户错误或问题引起的异常,这是程序员无法预见的,例如打开一个不存在的文件夹时,异常就发生了。
运行时异常:运行时异常是可能被程序员预见和避免的异常,与检查性异常不同的是运行时异常是不能被编译器在编译时期检测出来。
错误(Error):错误不是异常,错误一般与程序员无关,如栈溢出等,其编译器是检查不出来的。
3.异常体系结构
Java将异常当成对象处理,将Java.lang.Throwable作为所有异常的超类,Java API定义了许多异常类,这些异常类分为两大类,异常Exeption类和错误Error类。
Error:Error类对象由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。
Exeption:Exeption有一个非常重要的子类RuntimeExeption异常,这些异常一般由程序逻辑错误引起,程序应该从逻辑角度尽可能避免其发生。
Error与Exeption的区别:Error通常是灾难性的,程序无法控制和处理,当出现这些异常时,Java虚拟机(JVM)一般会选择终止线程;Exeption通常情况下是可以被程序处理的,并在程序中尽可能的去处理这些异常。
4.异常处理机制
异常处理通常有两大流程抛出异常和捕获异常
异常处理的五个关键字:try(抛出异常),catch(捕获异常),finally(善后处理),throw,throws。
异常的抛出是层层递进,从小到大的,如先抛出IOExcepion类没有捕获后再抛出Exeption类,最后才是Throwable
public class Text { public static void main(String[] args) { int a = 1; int b = 0; try {//try监控区域 System.out.println(a / b); } catch (Error e) { //catch(想要捕获的异常类型!)捕获异常 System.out.println("程序出现异常,变量b不能为0"); } catch (Exception e) { System.out.println("Exception"); } catch (Throwable t) { System.out.println("Throwable"); } finally { //处理善后工作 System.out.println("finally"); } //finally 可以不要finally, 假设Io,资源,关闭! } public void a() { b(); } public void b(){ a(); } }
结果
5.自定义异常
使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需继承Exception类即可。
在程序中使用自定义异常类,大体可分为以下几个步骤:
- 创建自定义异常类。
2.在方法中通过throw关键字抛出异常对象。
3.如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法
的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
4.在出现异常方法的调用者中捕获并处理异常。
以上就是我对于异常机制的理解,如有错误,望大佬指出