Ключевое слово Python, наконец, и его использование

Мы используем блоки try-except для обработки исключений в Python. В этой статье обсуждается, как вы можете использовать блок finally вместе с операторами try-except для обработки ресурсов и лучшего выполнения программы.
Обработка исключений в Python
Исключения вызывают внезапное завершение программы. Всякий раз, когда возникает исключение, выполнение программы прекращается, и управление передается обработчику исключения. Затем интерпретатор печатает сообщение об ошибке. Вы можете наблюдать это в следующей программе.
input_string=input("Please input a number:")
input_number=int(input_string)
square=input_number**2
print("The square of {} is {}.".format(input_number,square))
Выход:

ValueError Traceback (most recent call last)
/tmp/ipykernel_40005/2290798086.py in <module>
1 input_string=input("Please input a number:")
----> 2 input_number=int(input_string)
3 square=input_number**2
4 print("The square of {} is {}.".format(input_number,square))
ValueError: invalid literal for int() with base 10: 'PFB'
В приведенном выше примере программа запрашивает у пользователя ввод числа. Затем он вычисляет квадрат числа и печатает его. Если мы передаем в программу строку, такую как «PFB», она не может быть преобразована в число. Следовательно, программа столкнется с исключением Python ValueError, и выполнение мгновенно остановится.
Мы можем использовать блоки try-except Python для плавного завершения программы, когда в программе возникает исключение. Для этого мы можем выполнить код в блоке try и обработать все исключения в блоке exclude. Здесь блок try выполняется нормально. Если программа сталкивается с ошибкой, выполнение перенаправляется в блок исключений, где мы можем обработать исключение. Вы можете наблюдать это на следующем примере.
try:
input_string=input("Please input a number:")
input_number=int(input_string)
square=input_number**2
print("The square of {} is {}.".format(input_number,square))
except ValueError:
print("Please input a number not a string.")
Выход:
Please input a number:PFB
Please input a number not a string.
В приведенном выше примере мы использовали блок try-except для обработки ошибки. Поскольку исключение ValueError вызывается функцией int(), блок exclude перехватывает его. Затем мы печатаем сообщение о том, что пользователь должен ввести число, а не строку. После этого выполнение программы плавно останавливается.
Если в блоке try не возникает ошибок, блок exclude не выполняется. Например, если мы введем число в программу, она выполнится нормально и напечатает квадрат введенного числа. Вы можете наблюдать это на следующем примере.
try:
input_string=input("Please input a number:")
input_number=int(input_string)
square=input_number**2
print("The square of {} is {}.".format(input_number,square))
except ValueError:
print("Please input a number not a string.")
Выход:
Please input a number:10
The square of 10 is 100.
Когда мы используем блоки try-except для обработки исключений, операторы после ошибки никогда не выполняются после того, как ошибка возникает в блоке try.
Теперь, если мы хотим выполнить какую-то задачу, например, освободить порт или закрыть файл, мы не сможем этого сделать, если программа выдаст ошибку. Здесь вступает в действие блок finally. Мы используем блок finally для выполнения кода независимо от того, возбуждено исключение или нет. Давайте обсудим, как реализовать программу с использованием блока finally в Python.
Блок finally в Python
Мы используем блок finally для обязательного выполнения кода на Python. Синтаксис использования блока finally следующий.
try:
#do something
except:
#do something once error occurs
finally:
#you must do it.
В приведенном выше синтаксисе операторы в блоке try выполняются нормально. Если программа не сталкивается с какой-либо ошибкой, код в блоке finally выполняется после блока try. Вы можете наблюдать это на следующем примере.
try:
input_string=input("Please input a number:")
input_number=int(input_string)
square=input_number**2
print("The square of {} is {}.".format(input_number,square))
except ValueError:
print("Please input a number not a string.")
finally:
print("This will always be executed.")
Выход:
Please input a number:11
The square of 11 is 121.
This will always be executed.
Если код в блоке try вызывает ошибку, код в блоке exclude выполняется для обработки ошибки. После этого код в блоке finally выполняется, как показано ниже.
try:
input_string=input("Please input a number:")
input_number=int(input_string)
square=input_number**2
print("The square of {} is {}.".format(input_number,square))
except ValueError:
print("Please input a number not a string.")
finally:
print("This will always be executed.")
Выход:
Please input a number:PFB
Please input a number not a string.
This will always be executed.
Даже если блок exclude не обрабатывает ошибку, код в блоке finally обязательно будет выполнен. Вы можете наблюдать это на следующем примере.
try:
input_string=input("Please input a number:")
input_number=int(input_string)
square=input_string**2
print("The square of {} is {}.".format(input_number,square))
except ValueError:
print("Please input a number not a string.")
finally:
print("This will always be executed.")
Выход:
Please input a number:10
This will always be executed.
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
В этом примере программа сталкивается с исключением Python TypeError. Поскольку блок exclude обрабатывает только исключение ValueError, программа запускает ошибку при возникновении исключения TypeError. Однако вы можете заметить, что блок finally выполняется до того, как программа выдаст ошибку.
Когда использовать блок finally в Python?
При написании кода на Python во многих случаях нам нужно принудительно выполнить некоторые операторы. Ниже приведены ситуации, в которых вы можете использовать блок finally в Python.
- Когда мы записываем какие-то данные в файл, они не сохраняются до тех пор, пока файл не будет закрыт. Теперь, когда программа вылетает с ошибкой, велика вероятность того, что файл не будет закрыт до выполнения кода в блоке exclude. Вы можете использовать блок finally в Python, чтобы закрыть файл с помощью метода close() в блоке finally. Таким образом, вы можете закрыть файл независимо от того, возникнет ли в программе какая-либо ошибка. Это поможет вам предотвратить любую потерю данных.
- Мы также можем использовать блок finally для закрытия соединений и освобождения сетевых портов при реализации программирования сокетов в Python.
- В любой ситуации, когда мы должны принудительно выполнить некоторые операторы, вы можете использовать блок finally после операторов try-except.
Заключение
В этой статье мы обсудили, как реализовать блок finally в Python. Мы также обсудили варианты использования блока finally в Python. Чтобы узнать больше о программировании на Python, вы можете прочитать эту статью о том, как завершить программу на Python. Вам также может понравиться эта статья о том, как создать словарь из строки в Python.
Надеюсь, вам понравилось читать эту статью. Следите за информативными статьями.
Приятного обучения!
Связанный
Рекомендуемое обучение Python
Курс: Python 3 для начинающих
Более 15 часов видеоконтента с инструкциями для начинающих. Узнайте, как создавать приложения для реального мира, и освойте основы.
Ссылка на источник