我有一個用Perl編寫的SOAP客戶端,使用LWP
包進行HTTPS傳輸,XML::Simple
用於解析XML有效載荷。有時候,致XMLin
的電話會失敗(die)(),然後我的腳本就會死掉,並且必須由我編寫的用於檢測此問題的監視程序重新啓動。這實在是不可取的,所以我想知道Perl是否有像C++異常處理機制那樣的設施,我可以捕獲死信息,忽略它報告錯誤並讓我的腳本繼續,就像發生錯誤一樣?我已經閱讀了大量的Perl書籍,並期待這一點,但我還沒有設法找到一些東西。這是殺死我的應用程序,但我不想寫我自己的XML解析代碼,除非我絕對必須。是否有可能捕獲另一個perl模塊內發生的消息?
回答
是;這樣做的基本的機制將是一個eval
:
sub a { die "BAD"; }
eval { a(); }
print "Survived an exception [email protected]";
但是,有爲什麼要使用更多的高層次結構(這是在此之上構建仍然),如Try::Tiny等原因。 (請參閱文檔底部的鏈接)。
謝謝,我會試試這個。 – mathematician1975
你可以捕捉到「死」,但你不能通過捕捉來阻止你的腳本死亡:*當「__DIE__」鉤子例程返回時,異常處理將繼續,因爲它沒有鉤子,除非鉤子程序本身通過「goto」,循環出口或「die()」退出。*
您可以運行易於在eval {}塊內調用die()的例程,雖然。
所以基本上,那麼當程序包遇到一個調用die()的條件時,我的腳本就會終止。我根本無能爲力?哦,看起來像我更好地啓動C++版本.... – mathematician1975
好吧,除了你現在被告知兩次的評估 – fork0
- 1. 是否有任何Perl模塊可用於將消息發送到Office Communicator?
- 2. 是否有可能捕獲流水線塊內的redis異常?
- 3. 是否有可能在另一個HTMLElements塊中包含HTMLElements塊
- 4. Perl oneliner可能是一個失控的多行++消息
- 5. 如何從另一個模塊發送套接字消息?
- 6. 是否有可能vmap內核模塊的內存?
- 7. 是否有可能從Java程序中捕獲Windows彈出消息框?
- 8. 是否有可能在另一個.cpp或.h文件中捕獲異常?
- 9. 是否有可能捕獲ExceptionInInitializerError?
- 10. 是否有可能捕獲net :: ERR_BLOCKED_BY_CLIENT?
- 11. 如果我沒有收到DeadLetter消息,是否有可能發生ActorRef更改?
- 12. 是否有可能巢內的另一個擴展方法?
- 13. 是否有可能捕獲請求的所有異常? (通常,對於一個模塊)
- 14. 是否有可能向Apache Giraph的前驅發送消息?
- 15. 是否有可能竊取Intents發送的消息?
- 16. 是否有一個相當於python的optparse.OptionParser的perl模塊?
- 17. 是否可以開發一個帶有內部窗格的DNN模塊?
- 18. 客戶是否有可能接收到另一封完整消息後的一半消息?
- 19. 是否有可能捕獲RPG程序中的程序調用引發的錯誤消息?
- 20. 是否有可能使用vuejs2中的另一個模塊mutator來更改模塊中的狀態prop?
- 21. 是否有可能有一個模擬Facebook帳戶發佈?
- 22. 是否有可能使所有模塊隱式導入模塊?
- 23. 付款被捕獲時PayPal是否發送IPN消息?
- 24. 是否有取消另一個調度隊列中的塊的模式?
- 25. 怎樣包括一個模塊(該模塊內部有一個模塊)的另一模塊內用Ruby
- 26. 是否有可能從數據庫獲取Java fmt消息包?
- 27. 是否有可能使用jQuery從另一個域獲取XML?
- 28. Node.js的模塊/輸出系統:是否有可能一個模塊導出爲一個功能
- 29. 是否有可能發生「跳躍」CAAnimation?
- 30. 捕獲所有Windows消息
使用自帶錯誤處理程序附帶的高級SOAP庫,例如[SOAP :: Lite](http://p3rl.org/SOAP::Lite)。 – daxim