Python中的traceback可以帮助我们获取详细的异常信息,有助于我们更快地排查代码中的错误。下面就是Python如何利用traceback获取详细的异常信息的完整攻略。
1. traceback模块
Python标准库中的traceback模块提供了获取异常信息的函数,我们可以根据这些函数获取异常信息。在使用时,我们需要首先导入traceback模块:
import traceback
2. 获取异常信息
我们可以使用traceback模块提供的以下函数获取异常信息:
2.1 traceback.format_exc()
traceback.format_exc()
函数可以获取当前异常的详细信息,并返回一个字符串。例如:
try:
1 / 0
except Exception as e:
print(traceback.format_exc())
输出结果为:
Traceback (most recent call last):
File "test.py", line 2, in <module>
1 / 0
ZeroDivisionError: division by zero
2.2 traceback.print_exc()
traceback.print_exc()
函数可以打印当前异常的详细信息。例如:
try:
1 / 0
except Exception as e:
traceback.print_exc()
输出结果为:
Traceback (most recent call last):
File "test.py", line 2, in <module>
1 / 0
ZeroDivisionError: division by zero
2.3 traceback.extract_tb()
traceback.extract_tb()
函数可以提取当前异常中包含的Traceback对象,并返回一个包含所有Traceback对象信息的元组。例如:
try:
1 / 0
except Exception as e:
tb = traceback.extract_tb(e.__traceback__)
print(tb)
输出结果为:
[('<stdin>', 1, '<module>', '1 / 0')]
3. 示例说明
下面介绍两个使用traceback获取异常信息的示例:
3.1 网络请求异常
当我们使用Python进行网络请求时,可能会出现请求超时、请求被拒绝等异常。我们可以使用traceback获取这些异常的详细信息。例如:
import requests
import traceback
try:
requests.get('https://www.baidu.com', timeout=0.1)
except Exception as e:
print(traceback.format_exc())
输出结果为:
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
File "/usr/local/lib/python3.7/site-packages/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
...(省略部分输出信息)...
File "/usr/local/lib/python3.7/site-packages/urllib3/connection.py", line 169, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw)
File "/usr/local/lib/python3.7/site-packages/urllib3/util/connection.py", line 73, in create_connection
for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
File "/usr/local/lib/python3.7/socket.py", line 752, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.timeout: timed out
3.2 自定义异常
我们可以自定义一个异常,并抛出这个异常。然后使用traceback获取这个异常的详细信息。例如:
import traceback
class MyException(Exception):
pass
try:
raise MyException('My Exception')
except Exception as e:
print(traceback.format_exc())
输出结果为:
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
__main__.MyException: My Exception
以上就是Python如何利用traceback获取详细的异常信息的完整攻略,希望对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python如何利用traceback获取详细的异常信息 - Python技术站