黑马程序员技术交流社区

标题: 关于异常的实现(已解决) [打印本页]

作者: 韩新凯    时间: 2012-4-25 14:23
标题: 关于异常的实现(已解决)
本帖最后由 韩新凯 于 2012-4-25 21:09 编辑

毕老师说异常有三种实现方式:1,try{}catch{}2,try{}catch{]finally{}3,try{}finally{}.
毕老师说,catch是用于处理异常的,如果没有catch就代表异常没有被处理过,如果该异常是检测时异常,那么必须声明,但是try{}finally{}并没有catch,谁能帮我解释一下,谢谢。
作者: 周海诚    时间: 2012-4-25 14:53

这是它们的工作原理:需要被监测的程序语句序列应包含在一个try代码块中。如果try代码块中有异常发生,那么就要抛出该异常。你的代码可以用catch来捕获这个异常,并且在catch块中加以适当地处理。系统产生的异常会由Java运行时系统自动抛出。如果要手动抛出异常,则使用关键字throw。在一些情况下,从一个方法抛出的异常必须用一个throws语句指定为异常。最后,从try代码块退出时,必须执行的代码要放在一个finally代码块中。
希望对你有帮助
作者: 金超    时间: 2012-4-25 16:17
try{可能出现异常的代码}finally{总是执行的代码}有异常但是没有被catch,说明异常交给外层处理了,比如用throws关键字声明的语句。
作者: 丁佼    时间: 2012-4-25 17:56
想象一种情况,一个try语句出现了5个异常,但是只catch了3个,那么剩下的的2个应该在函数上抛出给调用者处理。
也就是没有catch的异常应该抛出给调用者处理。

这里就很显然了,一个异常都没catch,那就是全部抛给调用者了。在函数上尽情的throws吧。
作者: 韩新凯    时间: 2012-4-25 19:37
金超 发表于 2012-4-25 16:17
try{可能出现异常的代码}finally{总是执行的代码}有异常但是没有被catch,说明异常交给外层处理了,比如用t ...

那就是说这个问题一定要有catch了?
作者: 韩新凯    时间: 2012-4-25 19:38
丁佼 发表于 2012-4-25 17:56
想象一种情况,一个try语句出现了5个异常,但是只catch了3个,那么剩下的的2个应该在函数上抛出给调用者处 ...

抛出的异常不是还是要被处理吗?
作者: 丁佼    时间: 2012-4-25 19:59
本帖最后由 丁佼 于 2012-4-25 20:00 编辑
韩新凯 发表于 2012-4-25 19:38
抛出的异常不是还是要被处理吗?


函数本身就不用处理了噻,交给上级处理,代码清晰了。

毕老师的视频里有:
授课用的电脑坏了,自己处理不了,直接throws给上级,让张老师负责判断是停课还是换电脑。
他自己的话抛完异常就进finally{倒杯水,等起;}
作者: 金超    时间: 2012-4-25 20:10
韩新凯 发表于 2012-4-25 19:37
那就是说这个问题一定要有catch了?

try {
   
  }finally {
   
  }

这样没问题,而且,可不是没有意义哦,因为这样可以保证即使发生了异常,finally里面的代码一定会被执行。

有时候,这个还是非常有用的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2