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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 忘忧草 中级黑马   /  2012-4-20 20:36  /  5747 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

try中如果有异常catch就捕获了,为什么还要throw主动抛出异常呢?

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

12 个回复

倒序浏览
catch是捕获异常,就不程序报错,也可以不throw,这要看业务了。。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
403692154 发表于 2012-4-20 20:51
catch是捕获异常,就不程序报错,也可以不throw,这要看业务了。。

那throw到底是干嘛的呢?
回复 使用道具 举报
throw 是抛出错误的原因  不知道这样理解对不对

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
李宗鹏 来自手机 中级黑马 2012-4-21 08:35:46
报纸
有时候throw可以不写!throw 在这里是引发一个异常的意思!
throw指令引发当前位于堆栈上的异常对象!如果对象引用是空引用!则引发NullReferenceException

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
自己认为try和throw是用来抛出异常的,catch用于捕获异常,其实有点像函数调用,throw调用函数,catch是被调用的函数。
执行到throw的时候,会根据抛出的异常类型,一层一层的向上找类型匹配的catch,如果没找到就返回系统。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
刘真 中级黑马 2012-4-21 09:47:26
7#
throw 语句用于发出在程序执行期间出现反常情况(异常)的信号。
通常,throw 语句与 try-catch 或 try-finally 语句一起使用。当引发异常时,
程序查找处理此异常的 catch 语句。throw语句用于抛出已经捕获的异常或者让指定的异常抛出。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
对try-catch的用法刚了解过,还没有融会贯通,还得继续努力!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
在百度分享看到的,写的挺好:
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义在try块中可以抛出异常吗

Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。
用try来指定一块预防所有"异常"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。
throw语句用来明确地抛出一个"异常"。
throws用来标明一个成员函数可能抛出的各种"异常"。
Finally为确保一段代码不管发生什么"异常"都被执行一段代码。
可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,"异常"的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"的try语句。

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
throw 是抛出异常,而catch是捕获异常。这要根据业务,分析什么时候有异常,就抛出异常。而在调用这个方法的时候就要捕获这个异常,如果不捕获可以继续抛出,直到在某个方法里面捕获这个异常。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报

try{}catch{}在方法体中具体捕获某种异常并进行处理。
throw是在方法体中抛出具体异常!这个异常可以是自定义的!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
抽象的理解是不是throw比try针对性更强

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
throw主动抛出异常是为了显示程序错误在那里和方便调试,希望对你有帮助。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马