遗留错误处理倾向于遵循这样的方法,即所有函数都根据成功/失败返回代码。您将检查此代码并适当地处理(如果出现错误)。
然而,现代编程语言遵循异常模型,如果发生了一些无法正确处理的异常,就会抛出一个异常--它会不断冒泡,直到得到处理。
我的问题是,为什么我们要转向异常模型?这背后的原因是什么?为什么它更好?
解释/链接将非常感谢。
发布于 2011-01-13 00:12:27
关于这一点,我已经写了很长一篇文章:Exceptions vs. status returns,但很简短:
< code >G210
在最后一点上展开:如果您忘记了对状态返回执行应该执行的操作,则会忽略错误。如果你忘了做你应该对异常做的事情,异常就会冒泡到软件的外层,在那里它变得可见。
发布于 2011-01-13 00:12:01
这里有几个原因
发布于 2020-03-25 08:19:58
明确表示出了一些错误,程序员很难忽略这一点(因为如果没有catch块,程序就会终止)。
异常将终止函数的其余部分的执行,并将控制传递给下一个catch块(如果当前调用堆栈中有的话)。如果没有,则程序将终止)
用于Javascript的
是的,它是可选的,但您应该始终使用.catch()
处理程序(对于Promise)。
这意味着,我们可以在一个单独的处理程序中处理许多函数中的许多错误,如下所示;
storeData()
.then(changeSomething)
.then(storeData)
.catch((e) => {
// Handle the error.
})
在这里,我们可以看到如何在一个函数中处理三个不同函数的错误。本质上,catch的行为就像它将所有函数包装在一个同步的try/catch中一样。
https://stackoverflow.com/questions/4670987
复制相似问题