我正在將遺留應用程序從PHP4遷移到PHP5.2,並且它使用的其中一個庫現在引發導致腳本中斷的異常。我正確地認爲在PHP4下這個異常不會以相同的方式處理(即根本不處理),所以腳本從現在拋出的異常處繼續運行?有什麼方法可以在PHP5下恢復這種行爲(理想情況下只適用於包含庫的頁面)?有關的例外是來自處理Excel的庫的com_exception。將PHP4移植到5並處理異常
0
A
回答
1
我嘗試過所有從5.1.2到5.1.3(cvs也是)的Windows二進制PHP發行版,我不得不處理異常。
我的PHP設置是PHP 包的'install.txt'中描述的典型設置。我在php.ini中做出的唯一更改(除了 doc_root)是'com.allow_dcom = true'。
所以ü將不得不使用
catch(com_exception $e)
{
print($e->__toString());
}
0
PHP 4,在所有不支持例外。在PHP 4中,拋出異常的語法本來就是無效的語法。請參閱http://uk3.php.net/manual/en/language.exceptions.php
如果被告知更多關於正在拋出該exeption的類,將會很方便。
我的猜測是,有一個bugm或者在類本身或者你調用它的方式被一直觸發並被忽略,但現在導致這個異常被拋出。
這個網頁是關於在PHP5的變化,並有一些分析上市公司發出com_exception是如何工作的:http://devzone.zend.com/article/762
引述:
PHP 5引入了結構化異常處理(呵,catch()和throw()),這使我們可以使用內置的com_exception類將底層的COM異常暴露給PHP。如果你想趕上在腳本中的錯誤,你可能會這樣寫代碼:
<?php
$com = new COM("...");
try {
$com->call_a_method();
}
catch (com_exception $e) {
print $e . "\n";
}
?>
我希望上面的代碼片段可以幫助你。打印錯誤消息可能(應該)更多地揭示究竟是哪裏出了問題,哪些應該可以幫助您確定從哪裏出發。
當然,您正在使用的Excel類也可能需要升級;如果它是你舊的PHP4應用程序的一部分,那麼可能它是相當老的類;可能會有更新的版本可用,如果您在課堂上發現了錯誤,那麼新版本可能會處理該錯誤。
相關問題
- 1. 將PHP5移植到傳統PHP4,DOMDocument qu 012
- 2. Windows移動異常處理
- 3. ASP.NET MVC 4中的異常處理5
- 4. ASP.NET 5中的全局異常處理
- 5. Laravel 5跳過異常處理程序
- 6. 的Windows Mobile 5異常處理
- 7. PHP4到PHP5遷移
- 8. PHP4到PHP5遷移
- 9. Sigaction並將Linux代碼移植到Windows
- 10. 將Android移植到WP7。我如何處理KeyStore?
- 11. 如何將android移植到ARM9處理器上的設備?
- 12. 將文件預處理代碼從C移植到C#
- 13. 將ruby腳本移植到arm處理器
- 14. 異常處理
- 15. 處理異常
- 16. 異常處理
- 17. 異常處理
- 18. 異常處理
- 19. 異常處理
- 20. 處理異常
- 21. 異常處理
- 22. 異常處理
- 23. 異常處理
- 24. 異常處理
- 25. 異常處理?
- 26. 異常處理
- 27. 異常處理
- 28. 異常處理
- 29. 異常處理
- 30. 從Java 6移植Arrays.copyOfRange到Java 5
請添加示例代碼和完整的異常消息或/並添加更多關於您使用的操作系統和您使用的PHP版本的更多信息! – powtac 2011-01-20 12:48:54
脫離主題,但爲什麼5.2?爲什麼不直接使用PHP5.3,因爲這是最新的成熟版本? (它有幾個很好的功能,缺少5.2) – Spudley 2011-01-20 12:59:28