3 回答

TA贡献2037条经验 获得超6个赞
好的,我可以尝试给出一个尽可能保持中立的答案……(注意:我已经用几个月的时间完成了Python的专业工作,但是我还远远不能完全掌握该语言)
该准则是“免费的”;如果你来自一个Java的背景,你肯定会花更多的时间比大多数的Python开发者那里寻找什么被抛出时的文件,并有更多
try
/except
/finally
比常规Python代码中找到。换句话说:做适合自己的事。除了它们可以随时随地抛出的事实之外,Python还具有多异常捕获(仅从7开始才在Java中可用)
with
(某种程度上等效于Java 7的try-with-resources),您可以拥有多个except
块(例如Java可以catch
不止一次)等等。此外,我不知道应如何命名异常的真正约定,因此,如果您看到SomeError
,不要被愚弄,这很可能是Java开发人员认为的“已检查的异常”,而不是Error
。

TA贡献1946条经验 获得超4个赞
我不是Python开发人员,但我在C#中做了很多工作,但C#中也没有检查异常。作为一名Java编码器,这需要一些时间来适应。我个人仍然认为检查异常是一个不错的功能,但是意见却大相径庭(正如您在此处的某些回复中所看到的)。
在线上有很多文章介绍为什么检查异常不是一个好主意(有关这种观点,请参阅此博客)。
但是,不管您的喜好如何:Python和C#的经验法则基本上是做您已经在做的事情-测试运行并阅读文档。
我通常在C#中要做的是,在程序的根目录中有一个“全部捕获”异常处理程序,以确保报告任何错误并且程序干净退出,然后在我的代码中更深层的地方有针对“已知的特定错误”。因此,实际上,与您在Java中的工作方式没有什么不同,只是要多做一点工作才能弄清楚将特定处理程序放在哪里。

TA贡献1809条经验 获得超8个赞
最佳实践是在适当的位置处理适当的异常。作为开发人员,只有您自己可以决定代码的哪一部分应该捕获异常。随着体面的单元测试,这应该变得显而易见。如果您有未处理的异常,它们将会出现。
您已经描述了差异。从根本上讲,Java的设计师认为他们比您更了解应该如何编码,并且会迫使您编写大量代码。相比之下,Python假设您是成年人,并且您知道自己想做什么。这意味着您可以坚持射击自己。
添加回答
举报