【发布时间】:2013-12-12 03:26:18
【问题描述】:
我想导入一堆库并捕获异常。
如果我只有 1 个 try catch 块,我会得到 1 个异常(第一个)。是否有一种模式可以遍历所有库并为每个缺少的库提供单独的异常?
#!/usr/bin/env python
try: import sys
except: print sys.exc_info()
try: import numpy as np
except: print sys.exc_info()
try: import scipy as sp
except: print sys.exc_info()
try: import os as os
except: print sys.exc_info()
try: from operator import itemgetter
except: print sys.exc_info()
try: import socket
except: print sys.exc_info()
try: import logging
except: print sys.exc_info()
try: from time import gmtime, strftime
except: print sys.exc_info()
【问题讨论】:
-
如果导入
sys失败,您的异常处理程序将完全失败。 -
我会在这里省略标准库。为什么导入这些文件根本会失败?
-
如果这些导入中的任何一个失败,为什么你的代码应该工作?您的代码是否足够健壮以处理未定义的
sp或np? -
正如 Martijn 正确指出的那样,这有点毫无意义。但是,如果您出于某种原因坚持不要在后续行中使用以前导入的模块(例如
sys),因为它们可能尚未导入。 -
我不同意这里的评论者 - 有有效的用例。您可能会运行嵌入式 Python(如在应用程序或嵌入式设备中)而运行时受限,我遇到过这样的混蛋,例如在诺基亚 60 系列手机上。安息吧然而,在此处理仅用于找出您的应用程序在嵌入式设备上崩溃的原因,因为通常标准错误处理程序根本不输出任何内容。
标签: python exception-handling setup.py egg