Python 异常和错误处理时,try...except 、if...else... 哪个更好一些,为什么?
The point is that using try/except statements is in many cases much more natural (more “Pythonic”) than if/else, and you should get into the habit of using them where you can.
这个是《Beginning Python From Novice to Professional, 2nd Edition》里的原话,但 StackOverflow 里又有
Why is “except: pass” a bad programming practice?
我就疑惑了……到底哪个好一些?还是说有更好的方法?
3 回答
千巷猫影
TA贡献1829条经验 获得超7个赞
异常的时候,使用try...except
正常的程序流程使用 if...else
以数组为例,比如读取数组下标越界,你的程序中并不期盼由此发展出功能 。
try:
data=array[x][y][z]
except Exception:
data=None
# 或者定义任何你不期盼发生的情况下的默认处理
但是,假如你的程序设计里,数组的越界与否是 功能 具体实现的一部分,那么就应该使用if...else保证语义清晰。
if x< len(array):
if y< len(array[x]):
else:
else:
但,也不是绝对,如果可视性与语义冲突,我个人以为 可视性>=语义清晰。比如简单而又易发的单句越界检查,即使越界在设计里是异常,但因为if的语句少过try,则我以为可以写if。
总的来说,raise就是把所有状态抛出,可以在任意上层处理,if...else 则是就地的代码分支.
月关宝盒
TA贡献1772条经验 获得超5个赞
异常处理当然 try/except
Why is “except: pass” a bad programming practice?
并不是在说 try/except 作为异常处理不好
这应该是在说 except 不catch具体的错误 pass 不处理错误不好
因为这等于一个异常处理的空壳, 并没有真的处理异常
添加回答
举报
0/150
提交
取消