python输出异常模块traceback的常见用法

traceback模块可以打印出程序当前具体的异常信息。常用的函数是:
traceback.format_exc()以字符串返回异常信息
traceback.print_exc()直接打印出异常信息
测试代码如下:
import traceback
import serial

try:
    ser = serial.Serial('COM13', 115200)
    ser = serial.Serial('COM13', 115200)
except:
    traceback.print_exc()

该代码连续两次打开同一个串口COM13,Traceback模块可以精确定位错误serial.serialutil.SerialException: could not open port 'COM13': PermissionError(13, '拒绝访问。', None, 5)

Traceback (most recent call last):
  File "C:/Users/chq/PycharmProjects/untitled/venv/hehe.py", line 6, in
    ser = serial.Serial('COM13', 115200)
  File "C:\Users\chq\PycharmProjects\untitled\venv\lib\site-packages\serial\serialwin32.py", line 31, in __init__
    super(Serial, self).__init__(*args, **kwargs)
  File "C:\Users\chq\PycharmProjects\untitled\venv\lib\site-packages\serial\serialutil.py", line 240, in __init__
    self.open()
  File "C:\Users\chq\PycharmProjects\untitled\venv\lib\site-packages\serial\serialwin32.py", line 62, in open
    raise SerialException("could not open port {!r}: {!r}".format(self.portstr, ctypes.WinError()))
serial.serialutil.SerialException: could not open port 'COM13': PermissionError(13, '拒绝访问。', None, 5)
 

traceback.print_exc()和traceback.format_exc()输出的错误信息是一模一样的。traceback.print_exc()可以填入file参数,把异常信息填入到指定的file里。

import traceback
import serial

try:
    ser = serial.Serial('COM13', 115200)
    ser = serial.Serial('COM13', 115200)
except:
    traceback.print_exc(file=open('error.txt','a'))

输出结果如下,程序正常执行。在python文件的同层目录下生成了error.txt文件,内容即为 traceback.print_exc()输出的错误信息。

C:\Users\chq\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/chq/PycharmProjects/untitled/venv/hehe.py

Process finished with exit code 0

你可能感兴趣的:(Python,Python)