假设我有以下功能:
def test():
...
if x['error']:
raise
Run Code Online (Sandbox Code Playgroud)
无论是否x['error']定义,这都会引发异常。
相反,如果我尝试这个,它不会抛出任何异常:
def test():
...
try:
if x['error']:
raise
except:
return
Run Code Online (Sandbox Code Playgroud)
如何测试特定值并在定义时返回异常,如果未定义则成功返回?
如果你想以字符串形式返回错误:
>>> def test():
try:
if x['error']:raise
except Exception as err:
return err
>>> test()
NameError("name 'x' is not defined",)
Run Code Online (Sandbox Code Playgroud)
如果你想让错误发生:
>>> def test():
try:
if x['error']:raise
except:
raise
>>> test()
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
test()
File "<pyshell#19>", line 3, in test
if x['error']:raise
NameError: name 'x' is not defined
Run Code Online (Sandbox Code Playgroud)
def test():
...
if x.get('error'):
raise
Run Code Online (Sandbox Code Playgroud)
您可以使用字典的内置get函数来避免无意中引发错误。如果指定键的值不存在, Get 将返回None,而不是抛出异常。