我正在尝试以下代码:
try:
res = subprocess.Popen('bgpq3 -4 {} -m 24 -l {}'.format('MAIyNT-
AS38082','12414'), shell=True,
universal_newlines=True,
stdout=subprocess.PIPE).communicate()[0]
except Exception:
print("Wrong")
#do this code
输出为?
ERROR:Unable to parse prefix 'MAIyNT-AS38082', af=2 (inet), ret=0
ERROR:Unable to parse prefix MAIyNT-AS38082
ERROR:Unable to add prefix MAIyNT-AS38082 (bad prefix or address-family)
所以我无法使用错误处理!
有什么想法吗?
答案 0 :(得分:0)
您在这里仅处理exception
类型的错误。您只需要使用except:
。这样,您可以捕获代码中发生的所有错误。
try:
#your code
except Exception as e:
#handle the exception
有关更多信息,请参阅the docs我是从一个快速的Google那里获得的;)
答案 1 :(得分:0)
在编写except Exception:
时,您并没有捕获到 all 例外:系统退出错误和操作系统错误(如BaseException
,SystemExit
,{{1 }}和KeyboardInterrupt
)are excluded。
子流程的大多数例外是OSError
。
由于您没有报告该错误的完整追溯,因此我只能假设您遇到了这些错误之一,可以使用以下命令捕获它们:
GeneratorExit
或
except subprocess.CalledProcessError:
正如PEP 8所建议的那样,即使可以使用except OSError:
,也不要单独使用except:
。
根据经验,请务必捕获您希望引发的 exact 异常!