A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何堂红 中级黑马   /  2014-6-7 01:16  /  1949 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何堂红 于 2014-6-10 00:16 编辑

throw和throws有什么区别? try、catch、finally分别在什么情况下使用?

19 个回复

倒序浏览
throw使用在函数内容部,而throws使用在函数上;
对于try,catch,finally这个有多中组合,最常见的是try...catch,还有就是try...catch...finally;
对于try的作用是检测代码是否会发生异常,或者是处理异常。虽然try是和catch集合使用的,但是有的情况是代码不想做异常处理,又在有异常的情况下有必须要执行的代码,就可以选择使用try...finally,finally是在它之前的代码是否有异常,都是会执行的。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
  1. class  DescriptException
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 try
  6.                 {
  7.                         //这里面是你可能发生异常的代码
  8.                 }
  9.                 catch ()//括号内部填写可能发生异常的类型,或者此类型的向上类型
  10.                 {
  11.                         //这里面是你要处理异常的方式   例如:System.out.println("出现异常了"); 当运行出现异常是  就会打印“出现异常了”
  12.                 }finally
  13.                         {
  14.                                 //在这块区域内的代码 ,无论如何都会执行,除非前面exit(0);退出虚拟机,否则就算在try里面有return也会执行这里面的代码
  15.                                 // 在这里面一般写关闭流或链接的代码,例如你链接数据库的时候,当你操作完数据库,是必须要释放数据库连接的,这时候释放连接的代码
  16.                                 //就应该放在这里面,
  17.                         }

  18.         }
  19.        

  20.         public void test() throws Exception1, Exception3 // 声明这个方法可能出现的异常,告诉调用者 调用这个方法是可能会出现 两种你需要处理的异常
  21.         {
  22.                 try
  23.                 {
  24.                         /*
  25.                                 可能出现异常的代码块
  26.                         */
  27.                        
  28.                 }
  29.                 catch (Exception1 e)
  30.                 {
  31.                         throw e;
  32.                 }catch(Exception2 e)
  33.                 {
  34.                         System.out.println("处理了异常Exception2");
  35.                 }
  36.                 if(a!=b)
  37.                 {
  38.                         throw new Exception3("自定义异常");
  39.                 }
  40.         }
  41.         /*
  42.                 由上面这个代码可以看出,在try catch语句中,可能出现两种异常 分别是Exception1 Exception2,其中当出现Exception1异常时,我将其对外抛出,
  43.                 抛给了调用这个方法的地方
  44.                 当出现Exception2的时候,自己处理了,处理的方式就是 打印一句话 (“处理了异常Exception2”)
  45.                 还有后面这个  当a不等b时 抛出 Exception3
  46.                
  47.                 在这个方法中 ,总共有三个异常 分别是 Exception1, Exception2,Exception3
  48.                 而在方法声明处我只声明了Exception1, Exception3两个异常 没有声明Exception2是因为我在方法内部自己处理了,没有处理的都通过
  49.                 throw抛给了调用者,让调用者去处理
  50.                 throw是将异常给抛出,throws是声明可能出现的异常
  51.         */
  52. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
  1. throw new Exception();
  2. public static void main()throws Exception{
  3. }
  4. //throw是一条处理异常的语句一般放在catch里面
  5. //throw是对函数的一种说明指明函数会出现什么异常
复制代码

回复 使用道具 举报 0 1
throw和throws用处不同,
回复 使用道具 举报 1 0
throw 和throws关键字的区别: 
  throw用于抛出异常对象,后面跟的是异常对象;throw用在函数内。 声明一个方法可能抛出的所有异常信息。
  throws用于抛出异常类,后面跟的异常类名,可以跟多个,用逗号隔开。throws用在函数上。抛出的一个具体的异常类型。
try需要检测的代码
catch异常处理的方式
finally不管有没有异常一定会执行的语句。
下面是几种搭配
1.try+catch
程序的流程是:运行到try块中,如果有异常抛出,则转到catch块去处理。然后执行catch块后面的语句

2.try+catch+finally
程序的流程是:运行到try块中,如果有异常抛出,则转到catch块,catch块执行完毕后,执行finally块的代码,再执行finally块后面的代码。
如果没有异常抛出,执行完try块,也要去执行finally块的代码。然后执行finally块后面的语句

3.try+finally
程序的流程是:运行到try块中,如果有异常抛出的话,程序转向执行finally块的代码。那末finally块后面的代码还会被执行吗?不会!因为你没有处理异常,所以遇到异常后,执行完finally后,方法就已抛出异常的方式退出了。
这种方式中要注意的是,由于你没有捕获异常,所以要在方法后面声明抛出异常

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 赞一个!

查看全部评分

回复 使用道具 举报
我来学习了!!!!!!!!!!!!!
回复 使用道具 举报

谢谢,很详细!
回复 使用道具 举报
阿布Yocan 发表于 2014-6-7 11:24
throw 和throws关键字的区别: 
  throw用于抛出异常对象,后面跟的是异常对象;throw用在函数内。 声 ...

谢谢,很详细!
回复 使用道具 举报
throw用在函数内  用来抛出异常   后面跟的是异常对象
throws 用在函数上 用来标识函数暴露出的异常 后面跟的是异常的类名 (可以跟多个 中间用逗号隔开)
try catch 一般用来检测并处理异常 finnaly来结束流 finally里面的句子正常情况下一定会执行到
回复 使用道具 举报
Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。
用try来指定一块预防所有"异常"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。
throw语句用来明确地抛出一个"异常"。
throws用来标明一个成员函数可能抛出的各种"异常"。
Finally为确保一段代码不管发生什么"异常"都被执行一段代码。
可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,"异常"的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"的try语句。
回复 使用道具 举报
throw用于抛出异常对象,后面跟的是异常对象,在函数内使用
回复 使用道具 举报
throw用于抛出异常对象,后面跟的是异常对象,在函数内使用
throws用于抛出异常类,后面跟的是异常的类名,可以有多个,用在函数上面
try {
      需要被检测的代码
} catch () {
        处理异常的代码
}final{
一定会执行的代码  
}
回复 使用道具 举报
罗中扬 发表于 2014-6-9 23:56
throw用于抛出异常对象,后面跟的是异常对象,在函数内使用
throws用于抛出异常类,后面跟的是异常的类名, ...

你这么快就学到异常了?
回复 使用道具 举报
何堂红 发表于 2014-6-10 00:16
你这么快就学到异常了?

我的流程都走完了   就是还没有技术分啊   今天都面试可
回复 使用道具 举报
Throws用在方法的声明中,表明该方法不对其后异常列表进行处理,Throw用在方法体中,表明成员主动产生一个异常,这种异常可以进行处理也可不处理,如果不处理,需要throw语句所在的方法明确用throws把这个异常抛出
回复 使用道具 举报
罗中扬 发表于 2014-6-10 00:22
我的流程都走完了   就是还没有技术分啊   今天都面试可

哦,那你得抓紧时间啊
回复 使用道具 举报
这个在老毕的视频上讲的很详细啊
回复 使用道具 举报
throw关键字是用在程序中,它要明确的抛出异常。而throws用在方法上,表明方法不能处理的异常,而且要指定那些异常不能处理。
回复 使用道具 举报
我来学习了!!!!!!!!!!!!!!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马