2010-07-01 47 views
2

除了在{}塊以外的try {}中封裝我的整個代碼,有沒有辦法在全局範圍內捕獲異常呢?Google App Engine中的全局異常處理

基本上,我正在尋找一種方式,有一個全球性的異常處理程序將處理在谷歌應用程序引擎

回答

1

如果你使用的是webapp框架,你應該已經定義了一個RequestHandler的子類作爲基類,所有你的應用程序的處理程序擴展了它。您可以簡單地覆蓋handle_exception,它用作任何未捕獲異常的全局異常處理程序。

default implementation調用self.error(500),記錄異常,如果調試打開,則輸出堆棧跟蹤。

如果您使用的是其他框架,您可以編寫一段WSGI中間件來調用封裝的WSGI應用程序,並捕獲任何拋出的異常,並根據需要處理它們。

0

好寫的我的Python應用程序的所有未處理的異常,在最基本的層面上,你可以換你的所有在一個巨大的try-except塊中由app.yaml引用的處理程序腳本。

如果您使用的是webapp框架,請考慮覆蓋每個請求處理程序的handle_exception()。如果您希望所有請求處理程序都具有您指定的基本異常處理,則可以使用實現此方法的請求處理程序,然後從中派生所有處理程序。

0

您的應用程序可能有一個main()函數,將try/except函數放在該函數中,它將捕獲應用程序中的所有內容。