python异常处理和日志处理方式

  • Post category:Python

Python 异常处理和日志处理方式

异常处理

异常处理是一种用于处理程序运行时出现错误情况的机制。在 Python 中,错误情况被称为异常(Exception),当异常发生时,程序将中断执行,并抛出相应的异常消息。

try…except…

Python 中使用 try...except... 的结构来处理异常。 try 用于包含可能会抛出异常的代码块,而 except 则用于处理抛出的异常。

try:
    # 可能会抛出异常的代码块
except ExceptionType:
    # 处理异常的代码块

我们可以使用 Exception 作为通用的异常类型。当发生任何类型的异常时,都会被 Exception 捕获。

下面是一个例子:

try:
    num1 = int(input("输入被除数:"))
    num2 = int(input("输入除数:"))
    result = num1 / num2
    print(result)
except Exception:
    print("输入错误或导致除零错误,请检查")

多个 except

当我们知道可能会抛出的异常类型时,可以使用多个 except 来分别处理不同类型的异常。

try:
    # 可能会抛出异常的代码块
except ExceptionType1:
    # 处理异常类型为 ExceptionType1 的代码块
except ExceptionType2:
    # 处理异常类型为 ExceptionType2 的代码块

下面是一个例子:

try:
    num1 = int(input("输入被除数:"))
    num2 = int(input("输入除数:"))
    result = num1 / num2
    print(result)
except ValueError:
    print("输入错误,请重新输入数字!")
except ZeroDivisionError:
    print("除数不能为零,请重新输入")

finally

finally 语句块中的代码不管是否发生了异常都会执行。可以用 finally 来释放文件,或者关闭数据库连接等资源。

try:
    # 可能会抛出异常的代码块
except ExceptionType:
    # 处理异常的代码块
finally:
    # 不管是否发生异常,都会执行的代码块

下面是一个例子:

try:
    file = open("file.txt", "r")
    content = file.read()
    print(content)
except Exception:
    print("发生异常")
finally:
    if file:
        file.close()

日志处理

日志处理是一种记录应用程序运行过程中发生的事件的方式。通过日志,我们可以了解到程序的运行情况,及时定位并解决问题。

Python 中使用 logging 模块来记录日志。可以通过这个模块来配置日志记录级别、输出格式、输出方式等。

日志级别

Python 中提供了多个日志记录级别,包括:

  • CRITICAL – 严重错误
  • ERROR – 一般错误
  • WARNING – 警告信息
  • INFO – 一般信息
  • DEBUG – 调试信息

我们可以通过 logging.basicConfig() 来配置日志记录的格式和输出方式。下面是一个例子:

import logging

logging.basicConfig(filename='example.log', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
logging.debug('这是一条调试信息')
logging.info('这是一条一般信息')
logging.warning('这是一条警告信息')
logging.error('这是一条错误信息')
logging.critical('这是一条严重错误')

日志文件输出

我们可以通过设置 logging.basicConfig() 的参数 filename 来将日志输出到文件中。

import logging

logging.basicConfig(filename='example.log', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')

日志控制台输出

我们可以通过设置 logging.basicConfig() 的参数 stream 来将日志输出到控制台。

import logging

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')

自定义日志记录器

可以通过创建自定义的日志记录器来实现更加灵活的日志处理。

import logging

# 创建一个自定义的 logger
logger = logging.getLogger('example')
logger.setLevel(logging.DEBUG)

# 创建一个文件日志处理器
file_handler = logging.FileHandler('example.log')

# 设置日志处理器的级别和格式
file_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)

# 将日志处理器添加到 logger 中
logger.addHandler(file_handler)

# 输出日志信息
logger.debug('这是一条调试信息')
logger.info('这是一条一般信息')
logger.warning('这是一条警告信息')
logger.error('这是一条错误信息')
logger.critical('这是一条严重错误')

以上就是Python异常处理和日志处理的攻略,希望能够对你有所帮助。