簡體   English   中英

是否有可能在python中跟蹤已引發的異常?

[英]Is it possible in python to track exception raised even it has been caught?

我遇到了一個討厭的錯誤,如果沒有閱讀django中的整個模型形式邏輯就無法解決:

管理員表單中的django自定義模型字段給出無效的選擇錯誤

基本上,發生的事情是在Django模型中,表單流程代碼在其中引發了ValidationError,然后在表單流程中將其捕獲並顯示錯誤消息。

即使已經在程序內部處理過,也可以跟蹤引發的特定類型的異常嗎?

例如:

大型代碼庫中的文件,此文件中的某個位置引發了異常,也被捕獲,我不知道此文件在哪里以及哪一行...

1 def process_form():
2  ...logic...
3  raise ValudationError()
4  ...logic...
5  except ValudationError:
6    ...handle...

向我展示的一些工具:在第3行中引發了ValudationError

我想我已經找到了一種方法,至少可以通過以下方法解決:去ValidationError的定義並在__init__方法中打印stacktrace:

class ValidationError(Exception):
    """An error while validating data."""
    def __init__(self, message, code=None, params=None):
        import traceback
        print traceback.print_exc()

是的,可以這樣簡單地完成

 def process_form():
  ...logic...
  raise ValudationError()
  ...logic...
  except ValudationError as e:
      print e        ### 'e' will be an object of Exception raised
      import traceback
      print traceback.print_exc()
  ...handle...

對於這樣的多個異常

except (ValudationError, AttributeError) as e:

有關更多信息,您可以閱讀https : //docs.python.org/2/tutorial/errors.html

暫無
暫無

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

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