假设我们要导入名为user.py
的脚本,该脚本可能会失败。
try:
import user
except ImportError:
logging.info('No user script loaded.')
我们如何确保仅捕获user.py
本身可能的导入失败,而不是user.py
中可能包含的导入?
答案 0 :(得分:1)
您可以查看参数:
try:
import user
except ImportError as exception:
if 'user' == exception.args[0][16:]:
logging.info('No user script loaded.')
这可确保您只在用户脚本导入失败时才记录该消息。
虽然可以说未能导入user
中的一个导入也意味着它无法导入user
(这意味着您无论如何都需要记录该消息)。
答案 1 :(得分:1)
您可以检查当前回溯是否是回溯链的一部分:
import sys
try:
import user
except ImportError:
if sys.exc_info()[2].tb_next:
raise
logging.info('No user script loaded.')
如果ImportError
中有user
,则sys.exc_info()[2].tb_next
会指向它。