Java异常大详解

一般来说,所谓的异常就是违反Java的语义导致程序中断指令流,但是好多同学看完Java的异常处理之后,还是不太
清楚究竟Java异常是干嘛的,怎么来学习Java异常,感觉是无处下手,那我们一起来看看Java异常吧!
首先,我们要知道一些常用的关键字:try,catch,throw,throws,finally,对就是这五个关键字,相信大家都很熟悉,那具体的
异常处理的流程是什么?
一般来说,简单异常的模式是这样的,让大家有个感性的认识:
try {
有可能产生异常的语句 ;
} [catch (异常类型 对象) {
异常处理 ...
} catch (异常类型 对象) {
异常处理 ...
} ....] [
finally {
不管是否出现异常都要执行此操作
}
其中,要知道try后面所跟的语句就是可能产生异常的语句,而catche就是去匹配异常,因为Java是有好多的异常类型,
但是一般的都是在Java.lang.Throwable.Exception,所以一般我们进行讨论的异常就是针对Exception来说的,说到这儿就有
一个好多人都问的面试题:请解释Error和Exception的区别,
那不知道的人是感觉很难,从来都没听过,其实error就是Java虚拟机的错误,他不是程序运行时出现的错误,
而Exception是程序运行时出现的异常,这个时候Java是有Java异常机制的,可以去捕获异常(Catche)。
说了这么多,好多人还是不清楚究竟什么是Java异常,那么我们再继续讨论:


异常处理流程:
·    1.当程序运行之中产生了异常之后, JVM 会根据产生的异常类型, 找到与之匹配的 XxxException 类并且自动创建一个异常
     类的实例化对象;
·    2.随后需要判断该程序代码之中是否可以进行异常处理, 就是判断是否可以通过 try 来捕获此异常对象, 如果没有相关的异
     常处理, 则程序会中断当前的执行操作, 而后交由 JVM 做默认处理, 输出异常信息之后, 程序中断执行;
·    3.如果说现在有异常处理, 那么此异常类的实例化对象将会由 try 语句捕获;
·    4.随后会交由 catch 匹配异常类型, 根据每一个已经出现的 catch 类型进行匹配处理, 如果此时已经匹配到了合适的 catch 的
      异常, 那么将会使用此 catch 中所带的语句进行处理, 如果没有匹配上, 则继续向后面的 catch 匹配, 那么这个时候就有可能产生
      两种情况: 匹配成功并且正常处理、 匹配失败没有处理;
·    5.不管现在是否匹配 catch 成功都会将操作交由 finall 代码执行, 进行一些固定的收尾操作;
·    6.随后在 finally 代码执行完毕后, 会判断此异常是否正常处理, 如果正常处理了, 则继续向后执行其它代码, 如果没有正常
      处理了, 则交由 JVM 默认处理。(JVM的处理结果,其实就是输出异常的信息,然后程序中断执行)
 

 
相信到这儿的时候,也应该知道Java异常处理机制了吧,那throw和throws又是有什么关系呢:(很容易被问的面试题)
1.throw 表示方法之中手工抛出异常;
2.在方法声明的时候,表示将方法中可能出现的异常告诉调用者,也就是说,方法调用的时候,要明确进行异常的处理;如下:
class MyMath {
public static int div(int x,int y) throws Exception {
return x / y ;
}
}
public class TestDemo {
public static void main(String args[]) throws Exception {
System.out.println(MyMath.div(10,0)) ;
 
 
 
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值