我是Python的新手,在处理自定义错误方面苦苦挣扎。当我的代码发现错误时,我希望它以红色字体抛出错误并将我带回Python终端而不会杀死Python。
我遇到了sys.exit()寻找答案,但它完全退出了Python。你知道一个替代方案,它会以红色字体 并 将我带回终端吗?
这是我到目前为止所做的。
import sys
def do_something(parameter):
if parameter > 100:
# quit the function and any function(s) that may have called it
sys.exit('Your parameter should not be greater than 100!')
else:
# otherwise, carry on with the rest of the code
如果我不清楚,请告诉我,我很乐意提供更多详情。提前谢谢大家!
答案 0 :(得分:22)
您有两种选择(至少)。
使用return
声明:
def do_something(parameter):
if parameter > 100:
# display error message if necessary
return # 'exit' function and return to caller
# rest of the code
您还可以return soemthing
将something
值传回给调用方。这可用于提供例如状态代码(例如0:成功,1:错误)。
或者更好的方法是raise
例外:
def do_something(parameter):
if parameter > 100:
raise ValueError('Parameter should...')
# rest of the code
try:
do_something(101)
except ValueError, e:
# display error message if necessary e.g. print str(e)
请参阅Python手册中的exceptions。
有内置的异常类(如上面的ValueError
)。您也可以按如下方式定义自己的:
class ParameterError(Exception):
pass
您还可以向自定义异常类添加其他代码以处理参数,显示自定义错误消息等...
列出内置例外here。
答案 1 :(得分:0)
定义一个自定义异常,并将其提升。
class MyError(Exception):
pass
...
if parameter > 100:
# quit the function and any function(s) that may have called it
raise MyError('Your parameter should not be greater than 100!')
(虽然实际上,现在我考虑一下,你可以使用一个内置的异常:ValueError似乎是合适的。)