阻止内部嵌套异常在Python 3中显示

时间:2019-10-28 15:53:20

标签: python python-3.x paramiko fabric

在发布本文之前,我查看了关于SO的一些参考文献,但没有提供答案,包括:

how-to-catch-inner-exception-in-python
during-handling-of-the-above-exception-another-exception-occurred-python-program
how-to-suppress-displaying-the-parent-exception

我想忽略(而不是打印)Python 3中的嵌套异常。我正在使用Fabric从主机列表中获取用户名列表。我无权访问的一台主机抛出异常。我要打印自定义消息并继续执行列表。这在大多数情况下都有效,但是我也遇到了try不会捕获的内部异常。我已经尝试了嵌套try,但无法按预期进行(捕获内部异常)。

第一个代码:

try:
    blah = c.run ("awk -F ':' '{ print $1 }' /etc/passwd", hide=True)
except:
    print (" didn't work")

出现以下错误:

  

异常:读取SSH协议标语时出错   追溯(最近一次通话):     _check_banner中的文件“ /Users/blah/.local/lib/python3.6/site-packages/paramiko/transport.py”,第2211行       buf = self.packetizer.readline(timeout)     在读取行中的文件“ /Users/blah/.local/lib/python3.6/site-packages/paramiko/packet.py”,第380行       buf + = self._read_timeout(超时)     _read_timeout中的文件“ /Users/blah/.local/lib/python3.6/site-packages/paramiko/packet.py”,第622行       提高socket.timeout()   socket.timeout

     

在处理上述异常期间,发生了另一个异常:

     

回溯(最近通话最近):     运行中的文件“ /Users/blah/.local/lib/python3.6/site-packages/paramiko/transport.py”,行2039       self._check_banner()     _check_banner中的文件“ /Users/blah/.local/lib/python3.6/site-packages/paramiko/transport.py”,第2216行       “读取SSH协议标语时出错” + str(e)   paramiko.ssh_exception.SSHException:读取SSH协议标题时出错

     

没有工作

如您所见,第一个异常已按预期捕获,但Fabric调用Paramiko引发了另一个异常。我想忽略并且绝对不打印Paramiko异常。

我尝试如下嵌套try/except并收到相同的输出。

try:
    try:
        blah = c.run("awk -F ':' '{ print $1 }' /etc/passwd", hide=True)
    except:
        print("inner error")
except:
    print("outer error")
  

异常:读取SSH协议标语时出错   追溯(最近一次通话):     _check_banner中的文件“ /Users/blah/.local/lib/python3.6/site-packages/paramiko/transport.py”,第2211行       buf = self.packetizer.readline(timeout)     在读取行中的文件“ /Users/blah/.local/lib/python3.6/site-packages/paramiko/packet.py”,第380行       buf + = self._read_timeout(超时)     _read_timeout中的文件“ /Users/blah/.local/lib/python3.6/site-packages/paramiko/packet.py”,第622行       提高socket.timeout()   socket.timeout

     

在处理上述异常期间,发生了另一个异常:

     

回溯(最近通话最近):     运行中的文件“ /Users/blah/.local/lib/python3.6/site-packages/paramiko/transport.py”,行2039       self._check_banner()     _check_banner中的文件“ /Users/blah/.local/lib/python3.6/site-packages/paramiko/transport.py”,第2216行       “读取SSH协议标语时出错” + str(e)   paramiko.ssh_exception.SSHException:读取SSH协议标题时出错

     

内部错误

更新

我发现,当我将结果输出到文件中时,我正确地获得了print命令,但是异常仍然出现在屏幕上。有什么办法抑制这种情况?

0 个答案:

没有答案