- Try catch and finally in python
- Блок try-except в Python
- Блок else в блоке try-except в Python
- Блок finally в Python
- Python try…except…finally
- Introduction to Python try…catch…finally statement
- Python try…catch…finally statement examples
- Python try…finally statement
- Summary
- Python try catch exceptions with simple examples
- Difference between Python Exception and Error
- Different type of errors in Python
- Syntax error in Python
- Recursion error in Python
- Python exceptions
Try catch and finally in python
Don’t learn to code. Code to learn!
- Python — Обзор
- Основы синтаксиса Python
- Операторы в Python
- Типы данных в Python
- Условные конструкторы в Python
- Циклы в Python
- Функции в Python
- Функциональное программирование в Python
- ООП в Python
- Модули в Python
- Работа с файлами в Python
- Обработка исключительных ситуаций в Python
Исключительной называется ситуация, в которой программа ведет себя не так, как предполагал разработчик. Причиной такой ситуации может быть как недоброкачественная работа программиста, так и недопонимание пользователя или умышленные действия взломщика.
Возьмем в качестве примера следующий скрипт. Программа спрашивает у пользователя число и делит сто на это число:
a = float(input("Введите число ")) print(100 / a)
Если пользователь введет информацию, которую мы от него ожидаем, то все сработает как нужно.
Вот что произойдет просто потому, что мы не учли, что на ноль делить нельзя.
А вот что случится, если кто-то специально попытается поломать программу.
Чем сложнее программа, тем больше у нее уязвимых мест, которые вам придется учитывать в процессе разработки. Python предлагает следующий механизм обработки исключительных ситуаций.
Блок try-except в Python
Уязвимый код заключается в блок try, после которого следует блок except, которому может задаваться возможная ошибка и реакция на нее:
try: a = float(input("Введите число:")) except ValueError: print ("Это не число!")
В данном примере программа пытается конвертировать информацию введенную пользователем в тип float, если же при этом возникнет ошибка класса ValueError, то выводится строка «This is not a valid number». В блоке except мы можем задать те классы ошибок на которые данный блок должен сработать, если мы не укажем ожидаемый класс ошибок, то блок будет реагировать на любую возникшую ошибку.
Блок try может содержать неограниченное количество блоков except:
try: a = float(input("Введите число: ") print (100 / a) except ValueError: print ("Это не число") except ZeroDivisionError: print ("На ноль делить нельзя")
Кроме того мы можем добавить пустой блок except, который будет срабатывать на непредвиденную выше ошибку. Пустой блок except всегда должен идти последним:
try: a = float(input("Введите число: ") print (100 / a) except ValueError: print ("Это не число!") except ZeroDivisionError: print ("На ноль делить нельзя!") except: print ("Неожиданная ошибка.")
Блок else в блоке try-except в Python
Блоку except можно добавить необязательный блок else, который сработает в случае, если программа выполнилась без ошибок:
try: a = float(input("Введите число: ") print (100 / a) except ValueError: print ("Это не число!") except ZeroDivisionError: print ("На ноль делить нельзя!") except: print ("Неожиданная ошибка.") else: print ("Код выполнился без ошибок")
В результате, мы получим следующее.
Блок finally в Python
Также у блока except есть еще один необязательный блок finally, который сработает независимо от того, выполнился код с ошибками или без:
try: a = float(input("Введите число: ") print (100 / a) except ValueError: print ("Это не число!") except ZeroDivisionError: print ("На ноль делить нельзя!") except: print ("Неожиданная ошибка.") else: print ("Код выполнился без ошибок") finally: print ("Я выполняюсь в любом случае!")
Таким образом, используя обработку исключительных ситуаций, вы можете защитить программу от взлома, непредвиденного поведения и в будущем получить детальную информацию по логическим ошибкам, содержащимся в ней.
Python try…except…finally
Summary: in this tutorial, you’ll learn about the Python try. except. finally statement.
Introduction to Python try…catch…finally statement
The try. except statement allows you to catch one or more exceptions in the try clause and handle each of them in the except clauses.
The try. except statement also has an optional clause called finally :
try: # code that may cause exceptions except: # code that handle exceptions finally: # code that clean up
Code language: PHP (php)
The finally clause always executes whether an exception occurs or not. And it executes after the try clause and any except clause.
The following flowchart illustrates the try. catch. finally clause:
Python try…catch…finally statement examples
The following example uses the try. catch. finally statement:
a = 10 b = 0 try: c = a / b print(c) except ZeroDivisionError as error: print(error) finally: print('Finishing up.')
Code language: PHP (php)
division by zero Finishing up.
In this example, the try clause causes a ZeroDivisionError exception both except and finally clause executes.
The try clause in the following example doesn’t cause an error. Therefore, all statements in the try and finally clauses execute:
a = 10 b = 2 try: c = a / b print(c) except ZeroDivisionError as error: print(error) finally: print('Finishing up.')
Code language: PHP (php)
5.0 Finishing up.
Code language: CSS (css)
Python try…finally statement
The catch clause in the try. catch. finally statement is optional. So you can write it like this:
try: # the code that may cause an exception finally: # the code that always executes
Code language: PHP (php)
Typically, you use this statement when you cannot handle the exception but you want to clean up resources. For example, you want to close the file that has been opened.
Summary
- Use Python try. catch. finally statement to execute a code block whether an exception occurs or not.
- Use the finally clause to clean up the resources such as closing files.
Python try catch exceptions with simple examples
A program in python terminates as it encounters an error. Mainly there are two common errors; syntax error and exceptions.
Python exceptions are errors that happen during execution of the program. Python try and except statements are one of the important statements that can catch exceptions. I
n this tutorial we will cover Python exceptions in more details and will see how python try except statements help us to try catch these exceptions along with examples. Moreover, we will also learn about some of the built-in exceptions in python and how to use them.
Difference between Python Exception and Error
Python exceptions and errors are two different things. There are some common differences between them which distinguish both from each other. These are the following differences between them.
- Errors cannot be handled, while Python exceptions can be catchd at the run time.
- The error indicates a problem that mainly occurs due to the lack of system resources while Exceptions are the problems which can occur at runtime and compile time. It mainly occurs in the code written by the developers.
- An error can be a syntax (parsing) error, while there can be many types of exceptions that could occur during the execution.
- An error might indicate critical problems that a reasonable application should not try to catch, while an exception might indicate conditions that an application should try to catch.
Different type of errors in Python
Errors are the problems in a program due to which the program will stop the execution. There can be different types of errors which might occur while coding. Some of which are Syntax error, recursion error and logical error. In this section we will closely look at each of these errors in more detail.
Syntax error in Python
When we run our python code, the first thing that interpreter will do is convert the code into python bytecode which then will be executed. If the interpreter finds any error/ invalid syntax during this state, it will not be able to convert our code into python code which means we have used invalid syntax somewhere in our code. The good thing is that most of the interpreters show us/give hints about the error which helps us to resolve it. If you are a beginner to Python language, you will see syntaxError a lot while running your code.
Here is an example showing the syntax error.
# defining variables a = 10 b = 20
Output:
You can see the python is indicating the error and pointing to the error.
Recursion error in Python
This recursion error occurs when we call a function. As the name suggests, recursion error when too many methods, one inside another is executed with one an infinite recursion.
See the following simple example of recursion error:
# defining a function: def main(): return main() # calling the function main()
Output:
See the last line, which shows the error. We get a recursionError because the function calls itself infinitely times without any break or other return statement.
Python exceptions
Sometimes, even if the syntax of the expression is correct, it may still cause an error when it executes. Such errors are called logical errors or exceptions. Logical errors are the errors that are detected during execution time and are not unconditionally fatal. Later in the tutorial we will cover how to catch these errors using python try except method.
Again there can be many different kinds of Python exceptions you may face. Some of them are typeError , ZeroDivisionError , importError and many more. We will see some of the examples of exceptions here.
See the example which gives typeError when we try to add two different data types.
# string data type name = "bashir" # integer data type age = 21 # printing by adding int and string print(age + name)
Here is one more example which gives zeroDivisionError when we try to divide some number by zero.
print(23/0) ZeroDivisionError: division by zero
Now see the last example of import module error . This error occurs when we import a module that does not exist.