Виняток — це неочікувана подія, яка виникає під час виконання програми. Він також відомий як a Помилка виконання . Коли ця помилка виникає, Python генерує виняток під час виконання, який можна обробити, що запобігає перериванню вашої програми.
приклад: У цьому коді система не може розділити число на нуль, тому виникає виняток.
Python3
a>=> 5> b>=> 0> print>(a>/>b)> |
>
>
Вихід
Traceback (most recent call last): File '/home/8a10be6ca075391a8b174e0987a3e7f5.py', line 3, in print(a/b) ZeroDivisionError: division by zero>
Обробка винятків за допомогою try, osim, else і finally
- Спробуй : цей блок перевіряє виключену помилку
- За винятком : Тут ви можете обробити помилку
- Інакше : якщо винятків немає, цей блок буде виконано
- Нарешті : Остаточний блок завжди виконується незалежно від того, генерується виняткова ситуація чи ні
Синтаксис Python Try, Except, else і Finally
try: # Some Code.... except: # optional block # Handling of exception (if required) else: # execute if no exception finally: # Some code .....(always executed)>
Робота ' спробувати і «крім»
Давайте спочатку розберемося, як Python спробувати і крім працює
- Перший спробувати виконується пропозиція, тобто код між спробувати і крім пункт.
- Якщо немає винятків, то тільки спробувати пункт буде виконано, крім пункт не буде виконано.
- Якщо трапляється будь-який виняток, спробувати речення буде пропущено і крім пункт буде виконуватися.
- Якщо трапляється будь-який виняток, але крім пункт у коді не обробляє його, він передається зовнішньому спробувати заяви. Якщо виняток залишається необробленим, виконання припиняється.
- А спробувати оператор може мати більше одного крім пункт.
приклад: Давайте спробуємо взяти цілочисельний ввід користувача та викинути виняток у блоці за винятком.
Python3
статичний в c
# Python code to illustrate working of try()> def> divide(x, y):> >try>:> ># Floor Division : Gives only Fractional> ># Part as Answer> >result>=> x>/>/> y> >print>(>'Yeah ! Your answer is :'>, result)> >except> ZeroDivisionError:> >print>(>'Sorry ! You are dividing by zero '>)> > # Look at parameters and note the working of Program> divide(>3>,>2>)> divide(>3>,>0>)> |
>
>
Вихід:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero>
Перехоплення кількох винятків у Python
Ось приклад, який демонструє, як використовувати кілька пропозицій, крім винятків, для обробки різних винятків:
Python3
try>:> >x>=> int>(>input>(>'Enter a number: '>))> >result>=> 10> /> x> except> ZeroDivisionError:> >print>(>'You cannot divide by zero.'>)> except> ValueError:> >print>(>'Invalid input. Please enter a valid number.'>)> except> Exception as e:> >print>(f>'An error occurred: {e}'>)> |
>
>
Вихід:
Enter a number: An error occurred: EOF when reading a line>
Речення Else в Python
Код потрапляє в блок else, лише якщо пропозиція try не викликає винятку.
приклад: Інакше блок буде виконано лише тоді, коли немає винятків .
Python3
# Python code to illustrate working of try()> def> divide(x, y):> >try>:> ># Floor Division : Gives only Fractional> ># Part as Answer> >result>=> x>/>/> y> >except> ZeroDivisionError:> >print>(>'Sorry ! You are dividing by zero '>)> >else>:> >print>(>'Yeah ! Your answer is :'>, result)> > # Look at parameters and note the working of Program> divide(>3>,>2>)> divide(>3>,>0>)> |
>
>
Вихід:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero>
Ключове слово Python finally
Python надає ключове слово нарешті , який завжди виконується після блоків try і крім. Блок finally завжди виконується після звичайного завершення блоку try або після завершення блоку try через певний виняток. Навіть якщо ви повернетеся в блок винятків, блок finally буде виконано
приклад: Давайте спробуємо створити виняток у блоці за винятком і, нарешті, виконаємо виняток, чи буде він створений, чи ні
Python3
# Python code to illustrate> # working of try()> def> divide(x, y):> >try>:> ># Floor Division : Gives only Fractional> ># Part as Answer> >result>=> x>/>/> y> >except> ZeroDivisionError:> >print>(>'Sorry ! You are dividing by zero '>)> >else>:> >print>(>'Yeah ! Your answer is :'>, result)> >finally>:> ># this block is always executed> ># regardless of exception generation.> >print>(>'This is always executed'>)> # Look at parameters and note the working of Program> divide(>3>,>2>)> divide(>3>,>0>)> |
>
>
Вихід:
Yeah ! Your answer is : 1 This is always executed Sorry ! You are dividing by zero This is always executed>