如果我有一个读取文件并返回值列表的函数,但该文件不存在,或者为该进程设置了读取权限,或者任何其他类型的异常,那么最好:
在这种情况下,如果重要的话我们会谈论Python。
答案 0 :(得分:2)
答案并非真正针对Python。关于异常的一般规则是,您应该只在可以完成某些操作的环境中捕获它们:例如:每10秒再试一次,最多3次,有意义,或询问用户他们想做什么:重试,中止? 如果捕获异常的函数无法合理恢复,最好让异常“冒泡”。有时,如果捕获异常的上下文可以添加其他有用信息,则可以捕获异常,添加有意义的信息并重新抛出不同的,更有意义的异常。这实际上取决于你想要做什么。 请注意,返回无效值是错误处理的不同范例,在某些情况下它是有意义的,但通常情况下,通过异常可以更好地处理您描述的故障。
答案 1 :(得分:1)
由调用者来决定做什么,所以给调用者提供它需要的信息 - 异常 - 让它决定。传递返回代码只会丢失信息,并且容易引导。
答案 2 :(得分:1)
如果您保证该功能始终能够完全正确处理异常,那么请在函数本身处理异常并且在失败时返回loaddata = function () {
if (localStorage.length > 0) {
for(var i = 0; i < localStorage.length; i++) {
if (localStorage.hasOwnProperty('title_' + i)) {
createNewTile(
JSON.parse(localStorage.getItem('title_' + i))
);
}
}
,因为空列表可能是有效的返回,None
比整数返回码更Pythonic。
但是,很可能你无法做出这样的保证,所以你应该允许异常冒泡到调用者。或者您可以通过捕获异常,对其执行某些分析(可能打印警告消息)然后重新引发异常,或者通过附加额外的错误/警告信息来提升它的修改版本来妥协。
这符合古代程序员的谚语:
永远不要测试您不知道如何处理的错误情况。
:)