Python change exception message

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

Python raise exception with custom message | Manually raising

Syntax

In Python 3 there are 4 different syntaxes of raising exceptions.

  1. raise exception – No argument print system default message
  2. raise exception (args) – with an argument to be printed
  3. raise – without any arguments re-raises the last exception
  4. 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

Python raise exception with custom message | Manually raising output

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 

example of raise exception Handling output

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.6

Python 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

  1. Создайте собственный класс исключений в Python
  2. Выполнение обработки исключений с помощью блока 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.

Сопутствующая статья - Python Exception

Источник

Читайте также:  What is java concurrency
Оцените статью