我在一个返回值的函数中有一个try / catch。如果一切顺利,try块中的return语句可以正常工作。但是,如果这是一个例外,我该怎么办?什么我在捕获中返回并最终阻止?返回语句必须存在或代码不能编译。
编辑:在1函数中我连接到URL,读取文件,并返回一个字符串。在另一个功能中,我从互联网上打开一个图像并返回一个位图。所以在这两种情况下,我应该在catch的return语句中有什么,最后是块?
答案 0 :(得分:7)
以下其中一项:
throws
。一般来说,没有逃避功能可能出错的事实。必须通知调用代码,或者函数必须有效地吞下错误并假装没有发生任何不良事件;这包括返回一些东西。细节取决于您的背景......
答案 1 :(得分:1)
您返回的值应该能够表示错误,例如,null
应该表示该函数不起作用。因此,在catch块中,函数将返回null
,例如。在finally
块中,您应该释放您使用的任何资源(例如,关闭您打开的所有文件等)。
你将这些东西放在finally块中,因为它确保它会在某个时候运行,即使catch
块中的代码抛出未处理的异常或任何东西。如果函数正常工作,它也会运行。
答案 2 :(得分:1)
在try / catch块之外使用return null;
此语句。如果事情有效,你的try块将会执行并返回,如果由于异常而失败,它将被捕获并且你会看到错误。