黑马程序员技术交流社区

标题: throw和throws有什么区别? try、catch、finally分别在什么情况下使用? [打印本页]

作者: 北极雪871208    时间: 2014-3-19 14:11
标题: throw和throws有什么区别? try、catch、finally分别在什么情况下使用?
---------------------- <a target="blank">ASP.Net+Unity开发</a>、<a target="blank">.Net培训</a>、期待与您交流! ----------------------
  小弟学到这部分,作为一名没基础的初学者一下就有点搞不懂了,希望哪位老师能帮助小弟,便于我对java知识的进一步理解!万分感激!(另外版主大哥能多给点儿积分吗,真心谢谢了!)

作者: 戒爱    时间: 2014-3-19 14:14
没基础没关系,不放弃,人家坚持一个月学会啥英语,我相信你坚持两周看懂视频,好多人都是没有基础的
作者: 我爱的是你爱我_    时间: 2014-3-19 14:47
try{}用来定义需要被检测的代码,catch(){}用来处理异常的代码,
finally{}中是一定会执行的代码
注意:
1,finally中定义的通常是 关闭资源代码。因为资源必须释放。
2,finally只有一种情况不会执行。当执行到System.exit(0);finally不会执行。
throw定义在函数内,用于抛出异常对象。
throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开
当函数内容有throw抛出异常对象,并未进行try处理。必须要在函数上声明,否则编译失败。
注意:RuntimeException除外。也就说,函数内如果抛出的RuntimeException异常,函数上可以不用声明。
这些毕老师视频都有讲到啊,day10里面有很详细解释!
作者: 三丶胖子    时间: 2014-3-19 14:56
throws是用来声明一个方法可能抛出的所有异常信息
throw则是指抛出的一个具体的异常类型。
使用了throw抛出一个异常,如果不用try{}catch(){}捕获,会编译失败
try{}里面放会抛出异常的代码,用catch(){}来处理异常代码
finally{}中的代码,是只要执行了try{}就一定会执行finally{},除非在try{}中使用了System.exit(o)(退出虚拟机)的方法
作者: 北极雪871208    时间: 2014-3-19 19:52
恩恩,我没有基础,不过我坚持看了十天视频了,记得疯狂的英语李阳老师说过一句话,再难的东西也经不起重复。我也慢慢体会到这点儿,感觉逐渐入门了,加油go go !
作者: 陨落″烟雨。    时间: 2014-3-19 20:06
本帖最后由 陨落″烟雨。 于 2014-3-19 20:25 编辑

建议多看毕老师视频      throw 用来丢出问题,throws用来告诉你我丢出问题了(就烫手芋,我搞不定这个问题,告诉你,让你来处理。)
   注解:这里的“你”就是使用这个方法的人

跟你说一下通俗的try   catch  finally,希望能有助于您的初步理解。

说!火车站过安检,try------就是安检机
                               catch----就是安检员

过安检的行李一但被安检机try)检测到违禁品(就是所谓的异常了),安检员catch)就可以处理这个异常了。

所以简而言之:try是探测器,catch是用来处理探测到问题的处理工具。

finally:就是用来关闭资源,上面也有人说了。(这个刚开始我也不是很能理解,看了毕老师的例子后才理解的,这个也想跟您通俗一下,但还没想到{:3_60:})







作者: 北极雪871208    时间: 2014-3-19 20:12
戒爱 发表于 2014-3-19 14:14
没基础没关系,不放弃,人家坚持一个月学会啥英语,我相信你坚持两周看懂视频,好多人都是没有基础的 ...

恩恩!我真在努力!
作者: 戒爱    时间: 2014-3-19 20:18
北极雪871208 发表于 2014-3-19 20:12
恩恩!我真在努力!

加油。其实我也是一个零基础,不懂任何计算机语言,正在自学中,目标进入黑马
作者: linweiwen    时间: 2014-3-19 21:13
楼主,我向你简要的说明一下,
其实没有那么复杂。这里只针对你的问题回答,不详细展开:

1.throw、throws、try……catch……finally 这三组都是用来处理程序中的异常的,
我自己一般都是写try……catch这种。

2.throws最不负责任,很多视频教程为了省时间,就用这种。
它直接把异常交给上一级的方法处理,写在方法名的隔壁。
  1. void YourMethod() throws Exception {
  2. ……
  3. }
复制代码


3.throw一般用来抛你自定义的异常。
异常这种东西,对具体业务而言很主观,像明天阳光普照,
你在室内凉空调可能会觉得不错,但在外面工作的人就不爽了。
因此,可能要throw你自己的异常,throw可以配合throws或者"try……catch"使用。
具体你还需要自己找些例子程序上机才能理解透彻。

4.throws可自己单独写,throw需要跟其他两者之一 一起出现。

5.try……catch……finally的,看下面的小程序。
  1. public class TestThrow {
  2.         public static void main(String[] args) {
  3.                 int a =0;
  4.                 try{
  5.                         System.out.println(1/a);//你程序需要执行的逻辑
  6.                 }catch(ArithmeticException e){
  7.                 System.out.println("你写的程序有问题!"); //对可能出现的异常进行处理。可以有多层的catch
  8.         }finally{
  9.                 System.out.println("最后无论怎样都输出这个!");
  10.                 //无论怎样,finally里面的代码都会执行。像关闭数据库之类的操作,可以在这里进行。
  11.         }
  12.         }
  13. }
复制代码


作者: chaos    时间: 2014-3-19 22:31
异常的捕获和处理:
try{
//throw 抛出异常
//可能抛出异常的语句
}catch(  Exception e)
{
........
//getMessage()获得异常事件的信息
//printlnStackTrace()用来跟踪异常事件发生时执行
}finally{
//无论是否发生异常都执行
//可以进行资源清除工作如:关闭,删除。。。。。。
.......
}
异常也可以直接抛出,如:
method()throws  Exception{}
作者: 北极雪871208    时间: 2014-3-20 10:01
戒爱 发表于 2014-3-19 20:18
加油。其实我也是一个零基础,不懂任何计算机语言,正在自学中,目标进入黑马 ...

恩恩!咱们一起加油!




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