Как выйти из функции 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 будет казаться подходящим).