- Python raise exception with custom message | Manually raising
- Syntax
- Python raises exception Example:
- Let’s see Another Example
- QA: How to raise an exception in Python 3
- Reference :
- Создание настраиваемых исключений в Python
- Создайте собственный класс исключений в Python
- Выполнение вызова исключения с использованием ключевого слова raise в Python
- Объявление настраиваемого сообщения об исключении в Python
- Выполнение обработки исключений с помощью блока try. except в Python
- Сопутствующая статья - Python Exception
Python raise exception with custom message | Manually raising
If you want to set up manually python exception then you can do it in Python. Python raise exception is the settlement to throw a manual error.
It’s always suggestible Don’t raise generic exceptions. Learn about Generic exception must read this tutorial – Python exception Handling | Error Handling
Syntax
In Python 3 there are 4 different syntaxes of raising exceptions.
- raise exception – No argument print system default message
- raise exception (args) – with an argument to be printed
- raise – without any arguments re-raises the last exception
- raise exception (args) from original_exception – contain the details of the original exception
raise ValueError('I am erorr')
In this tutorial, we used raise exception(args) to raise an exception. The args will be print by exception object.
Python raises exception Example:
It’s a simple example for raise exceptions with a custom message. The sole argument to raise shows the exception to be raised.
try: raise NameError('HiThere') except NameError: print('An raise exception !') raise
Let’s see Another Example
If you want an throwing error on any condition, like if negative values have entered. So you can do it like that example.
try: a = int(input("Enter a positive Number: ")) if a
QA: How to raise an exception in Python 3
it can be your interview question. There is simply you have to write an raise exception(args) in try except block, same as upper examples.
Reference :
Bonus: this tutorial is not cover the exception and error handling, for that you must follow this tutorial.
Do comment if you have any doubt and suggestion on this tutorial.
Note: This example (Project) is developed in PyCharm 2018.2 (Community Edition)
JRE: 1.8.0
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.13.6Python 3.7
All examples are of raise exception in python 3, so it may change its different from python 2 or upgraded versions.
Создание настраиваемых исключений в Python
- Создайте собственный класс исключений в Python
- Выполнение обработки исключений с помощью блока try. except в Python
Это руководство продемонстрирует, как вы можете создавать собственные классы исключений в Python. Здесь мы покажем, как правильно выполнять обработку исключений, определять собственные классы исключений и переопределять существующие встроенные исключения.
Исключения - это тип событий, которые происходят всякий раз, когда что-то в программе идет не так, как задумано, или нарушает выполнение предполагаемого варианта использования программы. Без обработки исключений программа полностью прекратит выполнение, и исключение придется либо исправить, либо обработать.
Создайте собственный класс исключений в Python
Создание класса исключения в Python выполняется так же, как и для обычного класса. Основное отличие состоит в том, что вы должны включить базовый класс Python Exception , чтобы сообщить компилятору, что создаваемый вами класс является классом исключения.
Давайте протестируем этот метод, чтобы создать класс исключения с именем DemoException и использовать ключевое слово потока управления заполнителем pass внутри в качестве заполнителя.
class DemoException(Exception): pass
Выполнение вызова исключения с использованием ключевого слова raise в Python
Чтобы протестировать класс DemoException и увидеть, что он отображает при фактическом срабатывании, выполните создание исключения. Возбуждение исключения является синонимом выброса исключения в других языках программирования.
Используя ключевое слово raise , запускает исключение, используя данный класс исключения, и выводит сообщение об исключении.
class DemoException(Exception): pass raise DemoException
Traceback (most recent call last): File "/Users/demo/python/demo_exception.py", line 4, in raise DemoException __main__.DemoException
Стандартное исключение будет выглядеть в терминале, если не было объявлено настраиваемое сообщение об исключении.
Объявление настраиваемого сообщения об исключении в Python
Чтобы объявить настраиваемое сообщение об исключении для DemoException , переопределите метод __init__() класса исключения и включите в параметры сообщение, которое должно выводиться для исключения, вместе с обязательным параметром ссылки на себя self .
Например, переопределим метод __init__() и создадим собственное сообщение для класса DemoException :
class DemoException(Exception): def __init__(self, message): super().__init__(message)
Обратите внимание, что для успешной интеграции сообщения в ваше исключение вызовите базовый класс Exception , метод __init__() и включите message в качестве аргумента.
Давайте снова вызовем класс исключения, используя ключевое слово raise , а теперь передавая с ним собственное сообщение:
class DemoException(Exception): def __init__(self, message): super().__init__(message) message = "Exception Triggered! Something went wrong." raise DemoException(message)
Результат должен выглядеть так:
Traceback (most recent call last): File "/Users/demo/python/helloworld.py", line 6, in module> raise DemoException(message) __main__.DemoException: Exception Triggered! Something went wrong.
Теперь мы успешно создали и запустили класс исключения с настраиваемым сообщением об ошибке.
В реальных ситуациях, которые могут вызвать исключение, как мы обрабатываем и вызываем эти исключения? Вы можете аккуратно решить эту проблему, реализовав обработку исключений с помощью блока try. except .
Выполнение обработки исключений с помощью блока try. except в Python
Блок try. except очень похож на блок try-catch в других языках, таких как Java.
- try (обязательно) - основной блок, отвечающий за инкапсуляцию блока кода, в котором может быть вызвано исключение. Блок try останавливает весь процесс в нем при возникновении исключения.
- except (обязательно) - программа блока продолжается всякий раз, когда инициируется указанное исключение. Этот блок обычно содержит описательное сообщение об ошибке для вызывающего абонента или просто простую инструкцию print() . В одном блоке try может быть более одного блока except , каждый из которых перехватывает разные исключения.
- else (необязательно) - в этом необязательном блоке программа продолжит работу, если блок try не вызвал никаких исключений.
- finally (необязательно) - этот необязательный блок запускается после того, как все из предыдущих 3 блоков было выполнено, независимо от того, инициировано ли исключение или нет.
Давайте воспользуемся предыдущим примером с использованием класса DemoException , чтобы попробовать простой блок try. except .
Сначала оберните ключевое слово raise в функцию и поместите его в блок try. except .
Функция, которую мы создадим для этого примера, - это функция, которая принимает число и выдает исключение, если оно отправляет 0 . Если он отправит любой другой номер, то код будет работать так, как задумано. Посмотрите пример ниже:
class DemoException(Exception): def __init__(self, message): super().__init__(message) message = "Exception Triggered! Something went wrong." def triggerException(num): if (num == 0): raise DemoException(message) else: print(num) try: triggerException(0) print("Code has successfully been executed.") except DemoException: print("Error: Number should not be 0.")
Поскольку triggerException() передало 0 в качестве аргумента, код должен вызвать DemoException . Здесь мы должны ожидать, что сообщение с ключевым словом raise будет заменено тем, что находится внутри блока except в качестве вывода.
Обратите внимание, что строка print() после вызова функции triggerException() не выводилась. Это потому, что функция вызвала исключение; поэтому он немедленно остановил все процессы в блоке try и перешел непосредственно к блоку except .
Error: Number should not be 0.
Теперь давайте попробуем передать допустимое число, например, 20 .
try: triggerException(20) print("Code has successfully been executed.") except DemoException: print("Error: Number should not be 0.")
20 Code has successfully been executed.
Попробуем объединить блоки except и создать еще одно исключение. Назовем новое исключение NumberFormatException , которое срабатывает, если заданный вход не является числом. Для этого класса исключения давайте объявим сообщение внутри класса.
class NumberFormatException(Exception, value): message = f'value> is not a number' def __init__(self): super().__init__(message)
Теперь измените приведенный выше код для обработки нового класса исключения NumberFormatException :
class DemoException(Exception): def __init__(self, message): super().__init__(message) class NumberFormatException(Exception): def __init__(self, message, value): message = f'value> is not a number' super().__init__(message) message = "Exception occured." def triggerException(num): if (not num.isdigit()): raise NumberFormatException(message, num) elif (num == 0): raise DemoException(message) else: print(num) num = "sample string" try: triggerException(num) print("Code has successfully been executed.") except DemoException: print("Error: Number should not be 0.") except NumberFormatException: print(num+" is not a number.")
В этом коде значение num , которое было передано в triggerException() , является строкой 'sample string' , поэтому должно сработать NumberFormatException .
sample string is not a number.
Таким образом, создание пользовательских исключений в Python так же просто, как создание нового класса, но с классом Exception в качестве дополнительного аргумента в определении класса. Ключевое слово raise используется для запуска исключений с учетом класса исключения. Блоки try. except используются для обертывания одного или нескольких исключений в блоке кода и изменения того, что делает код при обработке этого исключения, а не просто для полного завершения программы.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.