私はPHP4からPHP5.2へのレガシーアプリケーションを移行しています。使用するライブラリの1つが例外を投げてしまい、スクリプトが壊れます。私は、PHP4ではこの例外は同じように(つまりまったく)処理されないと考えているので、スクリプトは例外がスローされた時点から続行するでしょうか? PHP5(理想的にはライブラリが含まれているページのみ)でこの動作を復元する方法はありますか?問題の例外は、Excelを扱うライブラリからのcom_exceptionです。PHP4から5への移行と例外の処理
答えて
5.1.2から5.1.3(cvsも)で見つかったWindows用のバイナリPHPディストリビューションをすべて試しましたが、例外を処理する必要がありました。
PHPの設定は、PHP パッケージの 'install.txt'に記載されている典型的な設定です。私がphp.iniで行った唯一の変更は、( doc_rootを除いて) 'com.allow_dcom = true'です。
ので、uがすべての例外をサポートしていませんでした
catch(com_exception $e)
{
print($e->__toString());
}
PHP 4を使用する必要があります。例外をスローする構文は、PHP 4で無効な構文になっていました。http://uk3.php.net/manual/en/language.exceptions.php
例外を投げているクラスについてもう少し詳しく話をすると便利でしょう。
私自身の推測では、クラス自体に、またはあなたがそれを呼び出している途中で無視されていたが、この例外がスローされているというバグがあります。
このページでは、PHP5の変化程度であり、com_exceptionがどのように機能するかにいくつかの洞察力を持っていますhttp://devzone.zend.com/article/762
引用すると:
PHP 5は、((、キャッチを試みる構造化例外処理を紹介)し、 throw())これにより、組み込みのcom_exceptionクラスを使用して、基礎となるCOM例外をPHPに公開することができます。あなたのスクリプトでエラーをキャッチしたい場合は、このようなコードを書くかもしれません:
<?php
$com = new COM("...");
try {
$com->call_a_method();
}
catch (com_exception $e) {
print $e . "\n";
}
?>
を私は上記のコードスニペットはあなたを助け願っています。エラーメッセージを印刷すると、正確に何が起こっていないのかが明らかになるはずです。
もちろん、使用しているExcelクラスもアップグレードする必要があります。それが古いPHP4アプリケーションの一部だったのであれば、それはおそらく古いクラスです。利用可能な新しいバージョンが存在する可能性があります。クラスにバグが見つかった場合は、新しいバージョンで対処することができます。
クラスの詳細が助けになるかどうかはわかりません - ライブラリにバグがあります(負荷がかかっている可能性があります。2000年以降です) Officeの現在のバージョンに対してテストされていません)、私は、PHPを5.2と同じように動作させる方法が4 wrt例外(明らかに長期的な解決策ではありませんが、これには時間がかかります) –
バグが何かを壊していない場合は、 'try' /' catch'を 'catch'ブロックで何も使用しないでください。これはあなたのコードが過去のエラーを引き継ぐことを可能にします。しかし、それができないのはエラーを修正することなので、実際にクラスそのものに問題があるなら、私は助けることができません。 (したがって、私は新しいバージョンをチェックすることを提案...または代替製品) – Spudley
- 1. PHP4からPHP5への移行
- 2. Windows Mobile 5例外処理
- 3. ステートレスEJB Beanからの例外処理とリダイレクトページの処理
- 4. 1行の例外処理
- 5. 例外処理の試行とキャッチ
- 6. ASP.NET例外ユーザーへのプレゼンテーションの処理
- 7. SVGからPHP4へのSVG
- 8. Rails 5.例外処理との関連付けの更新
- 9. Djangoの移行で例外を処理する方法は?
- 10. 3からHibernate 5への移行
- 11. umbraco 4からumbraco 5への移行
- 12. IllegalStateException:jboss 4からjboss 5への移行
- 13. 例外処理フィルタからのリダイレクト
- 14. mongodb 2.4.12から3.2.7へのグレイルの移行の例外
- 15. ClearCaseからTFSへの移行 - メモリ不足の例外
- 16. エラー処理と対象処理の例外処理の比較
- 17. php4からphp5へのコールバックによるセッションの移行奇妙な動作
- 18. ASP.Net 3.5から4.0への移行 - System.Security.Permissions.FileIOPermission例外
- 19. ビジュアルスタジオでの処理例外の処理
- 20. 未処理の例外 'System.Data.SqlClient.SqlExceptionの例外
- 21. 例外処理
- 22. 例外処理
- 23. TRIGGERSでの例外処理(各行用)
- 24. 例外処理内での例外処理
- 25. Kibana 4からKibana 5へのダッシュボードの移行5
- 26. GuiceからSpringへの移行:デフォルトのコンストラクタとプロパティの処理を伴うBean
- 27. スマートポインタと例外処理
- 28. 例外処理とメモリ
- 29. 例外処理とユーザーフレンドリーメッセージ
- 30. 例外処理とロギングアプリケーションブロックエンタープライズライブラリ5.0
サンプルコードと完全な例外メッセージの両方を追加してください。または/およびあなたが使用しているOSと使用しているPHPバージョンの詳細を追加してください。トピックをオフに – powtac
、しかしなぜ5.2?それは最新の成熟バージョンなので、PHP5.3を直進してみませんか? (それは5.2が欠けているいくつかの素敵な機能を持っています) – Spudley
いくつかの機能(最も顕著なereg正規表現関数)は5.3で廃止され、プロジェクト全体で広く使用されています。 5.2に移行したら、5.3への移行がより簡単になり、後で行うことができます。 –