如何退出 Python 函数,抛出错误语句而不退出 Python 解释器

37 浏览
0 Comments

如何退出 Python 函数,抛出错误语句而不退出 Python 解释器

这个问题已经有答案了:

Python中手动引发(抛出)异常

我是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

如果我表达不清楚,请告诉我,我很乐意提供更多细节。谢谢大家提前!

admin 更改状态以发布 2023年5月24日
0
0 Comments

定义一个自定义异常,并引发它。

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 似乎比较合适。)

0
0 Comments

你至少有两个选择。

使用 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 somethingsomething 的值传回调用者。例如,可以用它来提供状态码(例如: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 手册中的 异常

Python 中有内置的异常类(如上面的 ValueError)。你也可以按照以下方式定义自己的异常:

class ParameterError(Exception):
    pass

你还可以为自定义异常类添加额外的代码,以处理参数、显示自定义错误消息等。

内置的异常类在这里列出。

0