黑马程序员技术交流社区

标题: try catch 语句中throw的作用? [打印本页]

作者: 忘忧草    时间: 2012-4-20 20:36
标题: try catch 语句中throw的作用?
try中如果有异常catch就捕获了,为什么还要throw主动抛出异常呢?
作者: 403692154    时间: 2012-4-20 20:51
catch是捕获异常,就不程序报错,也可以不throw,这要看业务了。。
作者: 忘忧草    时间: 2012-4-20 21:53
403692154 发表于 2012-4-20 20:51
catch是捕获异常,就不程序报错,也可以不throw,这要看业务了。。

那throw到底是干嘛的呢?
作者: 杨礼文    时间: 2012-4-20 22:48
throw 是抛出错误的原因  不知道这样理解对不对
作者: 李宗鹏    时间: 2012-4-21 08:35
有时候throw可以不写!throw 在这里是引发一个异常的意思!
throw指令引发当前位于堆栈上的异常对象!如果对象引用是空引用!则引发NullReferenceException
作者: 刘建法    时间: 2012-4-21 09:37
自己认为try和throw是用来抛出异常的,catch用于捕获异常,其实有点像函数调用,throw调用函数,catch是被调用的函数。
执行到throw的时候,会根据抛出的异常类型,一层一层的向上找类型匹配的catch,如果没找到就返回系统。


作者: 刘真    时间: 2012-4-21 09:47
throw 语句用于发出在程序执行期间出现反常情况(异常)的信号。
通常,throw 语句与 try-catch 或 try-finally 语句一起使用。当引发异常时,
程序查找处理此异常的 catch 语句。throw语句用于抛出已经捕获的异常或者让指定的异常抛出。
作者: 越来越好    时间: 2012-4-21 16:03
对try-catch的用法刚了解过,还没有融会贯通,还得继续努力!
作者: 韩新凯    时间: 2012-4-21 16:42
在百度分享看到的,写的挺好:
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语句。


作者: 过客    时间: 2012-4-22 21:27
throw 是抛出异常,而catch是捕获异常。这要根据业务,分析什么时候有异常,就抛出异常。而在调用这个方法的时候就要捕获这个异常,如果不捕获可以继续抛出,直到在某个方法里面捕获这个异常。
作者: 张博    时间: 2012-4-22 21:43

try{}catch{}在方法体中具体捕获某种异常并进行处理。
throw是在方法体中抛出具体异常!这个异常可以是自定义的!
作者: 忘忧草    时间: 2012-4-23 09:21
抽象的理解是不是throw比try针对性更强
作者: 许庭洲    时间: 2012-4-27 11:30
throw主动抛出异常是为了显示程序错误在那里和方便调试,希望对你有帮助。




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