use*_*628 4 python exception-handling exception
我一次被告知,对于像确定类型这样的操作的异常处理是不好的形式,因为异常总是在计算上很昂贵.尽管如此,我已经看过帖子(特别是与Python相关的帖子,例如回复此帖子),建议使用异常处理来达到这个目的.
我想知道,如果要普遍避免抛出和捕获异常,因为它总是在计算上很昂贵,或者某些语言(如Python)是否更好地处理异常,并允许更自由地使用异常处理.
对于所有编程语言,您都不能提供一般性建议,例如"异常是昂贵的,因此应该避免它们 ".
正如您所怀疑的那样,在Python中,异常的使用比C++等其他语言更为宽松.Python不是原始性能,而是强调代码可读性.有一个成语"请求宽恕比允许更容易",这意味着:只是尝试你想要实现的东西并捕获异常比先检查兼容性更容易.
饶恕:
try:
do_something_with(dict["key"])
except (KeyError, TypeError):
# Oh well, there is no "key" in dict, or it has the wrong type
Run Code Online (Sandbox Code Playgroud)
允许:
if hasattr(dict, "__getitem__") and "key" in dict:
do_something_with(dict["key"])
else:
# Oh well
Run Code Online (Sandbox Code Playgroud)
实际上,在Python中,带有for
循环的迭代是通过引擎下的异常实现的:迭代StopIteration
在到达结束时引发异常.所以即使你试图避免异常,你也会一直使用它们.
归档时间: |
|
查看次数: |
235 次 |
最近记录: |