Знаете ли вы, что в одной строке можно перехватить несколько исключений?
Пользовательские исключения для более четкого кода
Вместо того, чтобы полагаться исключительно на встроенные исключения Python, создавайте собственные исключения для конкретных сценариев вашего приложения. Это делает ваш код более читабельным и предоставляет описательные сообщения об ошибках.
class NegativeNumberError(Exception): def __str__(self): return "Negative numbers are not allowed!" def check_positive(number): if number < 0: raise NegativeNumberError
Сила else
в обработке исключений
Многие (включая меня до того, как я начал изучать эту статью) не знают о else
в обработке исключений. Он запускается, когда блок try
не вызывает никаких исключений, что делает ваш код чище.
try: result = 10 / 2 except ZeroDivisionError: print("Can't divide by zero!") else: print(f"Result is {result}")
Использование logging
вместо print
для исключений
Вместо использования операторов print
для отображения исключений используйте модуль logging
. Он более универсален и позволяет хранить сообщения об ошибках в файлах или других выходных потоках.
import logging logging.basicConfig(level=logging.ERROR) try: # some code except Exception as e: logging.error(f"An error occurred: {e}")
Перехват нескольких исключений в одной строке
Если у вас есть несколько исключений, требующих одинаковой обработки, перехватывайте их в одной строке, чтобы сделать код более аккуратным.
try: # some code except (ValueError, TypeError, IndexError) as e: print(f"An error occurred: {e}")
Используйте finally
для действий по очистке
Блок finally
выполняется независимо от того, было ли вызвано исключение. Он идеально подходит для действий по очистке, таких как закрытие файлов или освобождение ресурсов.
try: file = open("example.txt", "r") data = file.read() except FileNotFoundError: print("File not found!") finally: file.close()
Углубите свое понимание
Для более глубокого изучения обработки исключений Python, включая лучшие практики и распространенные ошибки, углубитесь в это…