Java面向对象-捕获和抛出异常
- 异常处理五个关键字:
- try:监控区域,检查try语句块里有没有异常,
- catch:想要捕获的异常类型,当程序出现错误时,catch捕获的异常刚好是这个异常,就会执行catch语句块里的代码,否则跳过
- finally:处理善后工作,不管程序有没有报异常,该语句块里的代码都会实现
- throw:一般在方法中实现,主动抛出异常
- throws:假设方法中,处理不了这个异常。方法上抛出异常
捕获和抛出异常
- 编译时异常必须要进行处理,两种处理方案: try…c.tch …或者throws,如果采用throws这种方案,将来谁调用谁处理
- 运行时异常可以不处理,出现问题后,需要我们回来修改代码
- 一般程序报错后就会终止整个程序,但是当你捕获和抛出异常后,程序就会依旧正常的往后执行
异常处理之try-catch
格式:
try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常的处理代码
}
执行流程:
程序从try里面的代码开始执行,出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统
当Java运行行系统接收到异常对象时,会到catch中去找匹配的异常类,找到后进行异常的处理
执行完毕之后,程序还可以继续往下执行
实例
如图,我们知道0是不能被当做被除数的,所以程序运行时肯定会报异常,那么我们如何捕获和抛出该异常呢?
我们需要定义一个try、catch来捕获和抛出异常,因为try语句块里的代码出现了异常,它就不会再去走try语句块里的代码了,而catch刚好捕获了这个异常,他就会执行carch语句块里的代码,finally是不管程序有没有异常都会执行,
注:假设要捕获多个异常:从小到大!越高级的异常要写在后面
throw
异常处理之throws
虽然我们通过try-catch…可以对异常进行处理,但是并不是所有的情况我们都有权限进行异常的处理,它只是抛出异常,如果想让程序继续跑下去,还得使用try-catch进行
如图,我们在method方法上抛出了一个下标越界的异常,并在主方法中运行mehod方法,控制台显示:抛出异常后,程序就没有往下运行了,不然还会打印“结束”
这个例子跟上个例子一样,只不过是抛出异常后又对这个异常try-catch了,这样程序就可以往下走了