最佳实践:我应该在Python代码中使用异常处理程序,还是应该避免,如果可能的话?

LGB*_*LGB 0 python exception

我有一个项目,我必须经常这样做:

if "something" in dict:
    some_var = dict["something"]
    del dict["something"]
else:
    error_handler_or_other_stuff()
Run Code Online (Sandbox Code Playgroud)

不过我有这个想法:

try:
    some_var = dict.pop("something")
except KeyError:
    error_handler_or_other_stuff()
Run Code Online (Sandbox Code Playgroud)

我的问题是:一般来说,如何"快速"尝试 - 除了构造是处理异常?是否可以使用它,或者"手动"执行这些操作仍然更快.有时我也有必须将值转换为整数的情况:

try:
    some_var = int(dict.pop("something"))
except KeyError:
    error_handler_or_other_stuff("no such key")
except ValueError:
    error_handler_or_other_stuff("bad value for key")
Run Code Online (Sandbox Code Playgroud)

现在,带有异常的解决方案看起来相当不错,因为我可以一步完成两个检查,同时也从dict中删除了原始的键/值对,这是问题的一部分.所以我至少可以说:它看起来像一个优雅的解决方案.但是我不确定它是否更快,或者它是否有其他缺点我应该担心.

Obs*_*bot 5

哪种结构使您的代码更易于理解和维护?挑一个.

如果生成的代码太慢,请返回并考虑不同的错误处理策略是否更有效.