Python突破异常声明并继续

时间:2016-04-14 19:11:59

标签: python exception break

我正在为自动程序编写脚本。该测试通过Paramiko使用SSH连接,无论出于何种原因(系统相关),系统重新启动并关闭SSH连接。然后Python抛出一个错误,说连接被强行关闭。

我希望程序在except语句中捕获错误,然后将恢复ssh连接,然后从第一次出现错误的地方继续。

代码太长而无法发布,但基本上我希望执行以下操作:

 try:
      dotesting()
 except ParamikoError():
      restoressh()
      #here i want to break out and get back into dotesting()

我不确定这是可能的,因为“goto”不赞成并且在Python中不可用。我将如何执行此操作?

修改
所以我原本想做的事情是不可能的。现在我将焦点转移到重新启动dotesting()

中的特定步骤
 def dotesting():
      try:
            stepone()
      except ParamikoError():
            #Need to restart step here, want to flow into steptwo() below
      try:
            steptwo()
      except ParamikoError():
            #Need to restart step here, want to flow into the return statement below
      return("Success")

2 个答案:

答案 0 :(得分:0)

一个非常糟糕的答案是编写程序,然后将其保存为字符串列表,其中列表中的每个项目都是程序的一行。然后执行以下操作:

i =0
while i<len(program)
try: 
    eval(program[i])
    i+=1
except ParamikoError():
    pass

就像我说的那样,非常糟糕的解决方案,但我无法想到更好的事情。

答案 1 :(得分:0)

如果每次都要模拟ssh接​​口时都不抛出异常。否则,您可以这样做:

def stepone():
    raise AttributeError

def steptwo():
    return 1

class TestStuff(unittest.TestCase):

  def test_steps(self):
      with self.assertRaises(AttributeError):
          stepone()
      self.assertEquals(steptwo(), 1)

if __name__ == '__main__':
    unittest.main()