如果出现错误,是否可以使python打印指定的字符串?

Cup*_*Tea 1 python

我的意思是,如果我得到一个错误,例如

Traceback (most recent call last):
  File "score_keeper-test.py", line 106, in <module>
    app = program()
  File "score_keeper-test.py", line 37, in __init__
    self.label1.set_text(team1_name)
TypeError: Gtk.Label.set_text() argument 1 must be string, not None
Run Code Online (Sandbox Code Playgroud)

有没有办法让python打印像"你必须在TWO框中输入一个名字"而不是上面的错误?

Joh*_*web 9

Pythonic成语是EAFP:比许可更容易要求宽恕.在这种情况下:

try:
    self.label1.set_text(team1_name)
except TypeError:
    print "You MUST enter a name in the TWO boxes"
Run Code Online (Sandbox Code Playgroud)

注意如何我明确地赶上TypeError.这是推荐的PEP 8 -风格指南Python代码(必需的任何Python程序员阅读):

捕获异常时,请尽可能提及特定异常,而不是使用裸except:子句.

另一种(不推荐的)方法是:

if team1_name:
    self.label1.set_text(team1_name)
else:
    print "You MUST enter a name in the TWO boxes"
Run Code Online (Sandbox Code Playgroud)

......这是LBYL的一个例子:在你跳跃之前先看看.这种风格可以让你的代码散落在if陈述中.

  • 好点,但我可能会建议一个资格.在性能关键的情况下,你想避免`try-except`节,其中`except`块是公共路径.有时,补救这种不良(缓慢)结果的最佳方法是使用古老的`if-else`.David Beazley在*Python Essential Reference*中讨论了这个问题. (3认同)