πŸ”§ Как вывСсти ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Python ΠΈ Π½Π°ΠΉΡ‚ΠΈ Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: простой Π³Π°ΠΉΠ΄ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ

Как вывСсти ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Python

Π§Ρ‚ΠΎΠ±Ρ‹ вывСсти ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Python, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ raise Π² сочСтании с ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ:

raise Exception("ВСкст ошибки")

НапримСр, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ вывСсти ΠΎΡˆΠΈΠ±ΠΊΡƒ "Π”Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль нСдопустимо", Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

raise Exception("Π”Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль нСдопустимо")

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как вывСсти ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Python

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ошибки ΠΈΠ³Ρ€Π°ΡŽΡ‚ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² выявлСнии ΠΈ исправлСнии ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Когда Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΡˆΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Python, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π° ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, явно вывСсти сообщСниС ΠΎΠ± ошибкС. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ вывСсти ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова raise.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово raise

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово raise ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для явного Π²Ρ‹Π·ΠΎΠ²Π° ошибки Π² ΠΊΠΎΠ΄Π΅. Оно позволяСт программисту ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ встроСнныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Python. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово raise для вывСдСния ошибки:


# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: Π’Ρ‹Π·ΠΎΠ² собствСнной ошибки
raise ValueError("Π­Ρ‚ΠΎ сообщСниС ΠΎΠ± ошибкС явно Π²Ρ‹Π·Π²Π°Π½ΠΎ программистом")
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово raise для Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠ° ValueError с сообщСниСм ΠΎΠ± ошибкС. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ вызываСтся, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ остановлСно, ΠΈ сообщСниС ΠΎΠ± ошибкС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ. Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ошибки ΠΏΠΎ своСму ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ.

ВстроСнныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Python

Python прСдоставляСт Π½Π°Π±ΠΎΡ€ стандартных ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова raise. НСкоторыС ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных встроСнных ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² Python Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

  • ValueError: вызываСтся, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
  • TypeError: вызываСтся, ΠΊΠΎΠ³Π΄Π° опСрация ΠΈΠ»ΠΈ функция примСняСтся ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°
  • IndexError: вызываСтся, ΠΊΠΎΠ³Π΄Π° индСкс Π² спискС ΠΈΠ»ΠΈ строкС Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ допустимого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°
  • FileNotFoundError: вызываСтся, ΠΊΠΎΠ³Π΄Π° Ρ„Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½
  • ZeroDivisionError: вызываСтся, ΠΊΠΎΠ³Π΄Π° происходит ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° дСлСния Π½Π° ноль

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· этих встроСнных ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ:


# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: ВыбрасываниС встроСнного ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
def divide(a, b):
    if b == 0:
        raise ZeroDivisionError("На ноль Π΄Π΅Π»ΠΈΡ‚ΡŒ нСльзя")
    return a / b

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: ВыбрасываниС встроСнного ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ сообщСниСм
def open_file(filename):
    try:
        file = open(filename, "r")
    except FileNotFoundError:
        raise FileNotFoundError(f"Π€Π°ΠΉΠ» '{filename}' Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½")
    return file
    

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 2 ΠΌΡ‹ опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ divide(a, b), которая Π΄Π΅Π»ΠΈΡ‚ число a Π½Π° число b. Если b Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово raise для выбрасывания ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ZeroDivisionError с сообщСниСм "На ноль Π΄Π΅Π»ΠΈΡ‚ΡŒ нСльзя".

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 3 ΠΌΡ‹ опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ open_file(filename), которая ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Если Ρ„Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово raise для выбрасывания ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ FileNotFoundError с сообщСниСм "Π€Π°ΠΉΠ» 'filename' Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½".

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

Иногда ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Для этого Π² Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструкция try-except. Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ вывСсти ΠΎΡˆΠΈΠ±ΠΊΡƒ, помСщаСтся Π² Π±Π»ΠΎΠΊΠ΅ try, Π° ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибки помСщаСтся Π² Π±Π»ΠΎΠΊΠ΅ except. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования конструкции try-except:


# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4: ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ
try:
    result = divide(10, 0)
except ZeroDivisionError as e:
    print(f"Ошибка: {e}")
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ divide(10, 0), которая попытаСтся Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ 10 Π½Π° 0. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ZeroDivisionError, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ try-except для ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π’ Π±Π»ΠΎΠΊΠ΅ except ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сообщСниС ΠΎΠ± ошибкС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ e.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли, ΠΊΠ°ΠΊ вывСсти ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова raise. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ рассмотрСли использованиС встроСнных ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Python ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции try-except. ИспользованиС этих инструмСнтов позволяСт программистам Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ эффСктивно ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ошибки.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

OOP 36 ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Try Except Finally Python

#28. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Π‘Π»ΠΎΠΊΠΈ try / except | ООП Python

Π£Ρ€ΠΎΠΊΠΈ Python с нуля / #14 - ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Β«try - exceptΒ»

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Python? πŸπŸ“š ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π³ΠΈΠ΄ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ sqlite3 python: подробная инструкция для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ”₯Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Python Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС: подробная инструкция для успСха!πŸš€

πŸ”§ Как вывСсти ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Python ΠΈ Π½Π°ΠΉΡ‚ΠΈ Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: простой Π³Π°ΠΉΠ΄ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ

πŸ“ Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ список Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅ | ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π³Π°ΠΉΠ΄ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Python: пошаговоС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

⌚️ Как ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ врСмя Π² Python? Π£Π·Π½Π°ΠΉΡ‚Π΅ простыС способы исслСдования Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅