簡體   English   中英

Python脫離異常語句並繼續

[英]Python break out of exception statement and continue

我正在為自動化過程編寫腳本。 該測試使用通過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")

一個很糟糕的答案是編寫程序,然后將其保存為字符串列表,其中列表中的每個項目都是程序的一行。 然后執行以下操作:

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

就像我說的那樣,非常糟糕的解決方案,但是我想不出更好的辦法。

如果不是每次都不會引發異常,則應該模擬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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM