Java异常

error和exception的区别

两者都继承与Throwable类
不同的是error是和虚拟机有关 比如系统崩溃 栈溢出 虚拟机错误 内存空间不足等问题,这种错误程序无法自动恢复,需要关闭程序
exception是表示程序可以处理的异常 程序可以捕获和处理异常来保证程序的正常运行

Java的异常

异常的根类是Throwable
下面有两个子类 error 和 exception error是程序无法自己处理的问题 exception是程序可以处理恢复的问题
简单来说Error是程序自身的问题程序无法处理 而异常可以通过捕捉处理

exception发生错误的原因可以分为RunTimeException异常和IOException异常
RunTimeException一般表示Jvm虚拟机操作出现的错误 例如 数组越界 空指针异常和除数为0

Java异常又可以分为可查异常和不可查异常

不可查异常 指 编译器不要求处理的异常 即在编译阶段不捕获异常不会报错的异常 包括RunTimeException和error
可查异常
指编译器必须捕获处理的异常 这种异常在未编译阶段编译器就会去检查他 如果没有thorws抛出或是用try catch捕获就会报错 包括除了RunTimeException和他的之类之外的所有异常。

Exception异常又可以分为运行时异常和非运行时异常

运行时异常

RunTimeException和他的之类 例如空指针异常 数组越界 除数为0等jvm虚拟机的错误 这些异常是不可见的异常 程序可以选择处理也可以选择不处理 这种错误一般是程序逻辑错误导致
编译器检查时不会报错 但在运行时会出现错误

非运行时异常

除了RunTimeException和他的之类之外的所有异常 类型上都属于Exception类及其子类从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。

Java的异常处理机制

抛出异常 捕捉异常

抛出异常

当一个方法出现异常时,方法创建异常对象并且交付运行时的系统 异常对象包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。

捕捉异常

在系统抛出异常之后,运行时系统会转为寻找合适的异常处理器。
潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适的异常处理器,则运行时系统终止。同时,意味着Java程序的终止

抛出异常的方法:throws和throw

throws:通常被用在声明方法时,用来指定方法可能抛出的异常,多个异常可使用逗号分隔。throws关键字将异常抛给上一级,如果不想处理该异常,可以继续向上抛出,但最终要有能够处理该异常的代码。
throw:通常用在方法体中或者用来抛出用户自定义异常,并且抛出一个异常对象。程序在执行到throw语句时立即停止,如果要捕捉throw抛出的异常,则必须使用try-catch语句块或者try-catch-finally语句。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值