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

如果python出现错误,是否可以让它打印指定的字符串?,python,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_tex

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

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
有没有办法让python打印出类似于必须在两个框中输入名称而不是上面的错误的内容

if value:
   #Do stuff
else:
   print "You MUST enter a name in the TWO boxes"
现在,在这里,如果值为None,它将打印字符串-您必须在两个框中输入名称

现在,在这里,如果值为None,它将打印字符串-您必须在两个框中输入一个名称

蟒蛇习语是:请求原谅比允许更容易。在这种情况下:

try:
    self.label1.set_text(team1_name)
except TypeError:
    print "You MUST enter a name in the TWO boxes"
注意我是如何显式捕获TypeError的。对于任何Python程序员,essential reading都推荐这一点:

捕获异常时,尽可能提及特定的异常,而不是使用简单的except:子句

另一种不推荐的方法是:

if team1_name:
    self.label1.set_text(team1_name)
else:
    print "You MUST enter a name in the TWO boxes"
…这是一个例子:三思而后行。这种风格会让你的代码乱七八糟地出现在if语句中。

python的习惯用法是:请求原谅比允许更容易。在这种情况下:

try:
    self.label1.set_text(team1_name)
except TypeError:
    print "You MUST enter a name in the TWO boxes"
注意我是如何显式捕获TypeError的。对于任何Python程序员,essential reading都推荐这一点:

捕获异常时,尽可能提及特定的异常,而不是使用简单的except:子句

另一种不推荐的方法是:

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

…这是一个例子:三思而后行。这种风格可能会使您的代码在if语句中乱七八糟。

您需要异常处理,或者简单地说:if else check for value为None或Not您需要异常处理,或者简单地说:if else check for value为None或Not感谢您解释了每一条语句背后的原因以及为什么要选择其中一条。很好的一点,但我可以建议一个条件。在性能关键的情况下,您希望避免使用except块作为公共路径的try except节。有时候,补救这种不受欢迎的缓慢结果的最好方法是使用好的old if else。David Beazley在Python Essential Reference中讨论了这一点。感谢您解释了每种方法背后的原因以及为什么应该选择一种方法而不是另一种方法。很好的观点,但我可能会建议一种限制。在性能关键的情况下,您希望避免使用except块作为公共路径的try except节。有时候,补救这种不受欢迎的缓慢结果的最好方法是使用好的old if else。David Beazley在Python基本参考中讨论了这一点。