当前位置:  开发笔记 > 编程语言 > 正文

在Python中使用异常或返回代码更好吗?

如何解决《在Python中使用异常或返回代码更好吗?》经验,为你挑选了4个好方法。

您可能知道Microsoft关于在.NET中使用异常的建议:

性能注意事项

...

仅在特殊情况下抛出例外,......

另外,当返回代码足够时,不要抛出异常......

(请参阅http://msdn.microsoft.com/en-us/library/system.exception.aspx上的全文.)

作为比较,你会推荐相同的Python代码吗?



1> codeape..:

pythonic要做的是提出和处理异常.优秀的书籍"简而言之的Python"在第6章的"错误检查策略"中对此进行了讨论.

这本书讨论了EAFP("请求宽恕比允许更容易")与LBYL("在你跳跃之前看").

所以回答你的问题:

不,我不建议使用相同的python代码.我建议你简单地阅读Python的第6章.


这个答案没有解释任何事情.是否可以扩展以排除购买书籍的要求?
"在多数情况下"?几乎没有东西返回状态代码.如果有任何状态代码返回,那是因为底层C语言没有正确包装在异常中.在大多数情况下,我会投票放弃.

2> jammycakes..:

理解异常的最好方法是" 如果你的方法无法按照它的名字所做的那样做,就扔掉." 我个人认为,这个建议应该同样适用于.NET和Python.

关键的区别在于,您拥有的方法经常无法完成其名称应该执行的操作,例如,将字符串解析为整数或从数据库中检索记录.C#样式是为了避免首先抛出异常:

int i;
if (Int32.TryParse(myString, out i)) {
    doWhatever(i);
}
else {
    doWhatever(0);
}

而Python对这种事情更加放心:

try:
    i = int(myString)
except ValueError:
    i = 0
doWhatever(i);



3> googletorp..:

在Python中,异常并不像在其他语言中那样昂贵,因此我不建议尝试避免异常.但是如果你确实抛出异常,你通常会想要在代码中的某处捕获它,例外情况是发生致命错误.


除非它是致命的.//最好的问候,挑剔的委员会.

4> rob..:

通常,Python面向表达性.
我会在这里应用相同的原则:通常,您希望函数返回 结果(与其名称一致!)而不是错误代码.
出于这个原因,通常比返回错误代码更好地引发异常.

但是,MSDN文章中所述的内容也适用于Python,并且它并没有真正连接到返回错误代码而不是异常.
在许多情况下,您可以看到用于正常流量控制和处理预期情况的异常处理.在某些环境中,这会对性能产生巨大影响; 在所有环境中,它对程序表达能力和可维护性都有很大影响.

例外是针对特殊情况,超出正常计划流程; 如果你期望会发生某些事情,那么你应该直接处理,然后提出任何你不能期望/处理的东西.

当然,这不是一个配方,而只是一个启发式; 最终的决定总是取决于开发人员和上下文,并且无法在一套固定的指南中说明 - 这对于异常处理来说更为真实.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有