Как выйти из функции Python, бросая оператор ошибки без выхода из интерпретатора Python

Я новичок в Python и борюсь с обработкой самостоятельных ошибок. Когда мой код обнаружит ошибку, я хочу, чтобы он выдал ошибку красным шрифтом и вернул меня к терминалу Python, не убивая Python.

я наткнулся на sys.exit () ищет ответ, но он полностью покидает Python. Вы знаете альтернативу, которая отбрасывает ошибку в red font и возвращает меня к терминалу?

Это я так далеко.

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

пожалуйста, дайте мне знать, если я не ясно, и я буду рад предоставить более подробную информацию. Заранее всем спасибо!

2 ответов


у вас есть два варианта (как минимум).

С помощью 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: success, 1: error).

или лучше 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.

есть встроенные классы исключений (например,ValueError выше). Вы можно также определить свой собственный следующим образом:

class ParameterError(Exception):
    pass

вы также можете добавить дополнительный код в свои пользовательские классы исключений для обработки параметров, отображения пользовательских сообщений об ошибках и т. д...

встроенные исключения перечислены здесь.


определите пользовательское исключение и создайте его.

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 будет казаться подходящим).