2011-01-20 23 views
0

私はPHP4からPHP5.2へのレガシーアプリケーションを移行しています。使用するライブラリの1つが例外を投げてしまい、スクリプトが壊れます。私は、PHP4ではこの例外は同じように(つまりまったく)処理されないと考えているので、スクリプトは例外がスローされた時点から続行するでしょうか? PHP5(理想的にはライブラリが含まれているページのみ)でこの動作を復元する方法はありますか?問題の例外は、Excelを扱うライブラリからのcom_exceptionです。PHP4から5への移行と例外の処理

+0

サンプルコードと完全な例外メッセージの両方を追加してください。または/およびあなたが使用しているOSと使用しているPHPバージョンの詳細を追加してください。トピックをオフに – powtac

+0

、しかしなぜ5.2?それは最新の成熟バージョンなので、PHP5.3を直進してみませんか? (それは5.2が欠けているいくつかの素敵な機能を持っています) – Spudley

+0

いくつかの機能(最も顕著なereg正規表現関数)は5.3で廃止され、プロジェクト全体で広く使用されています。 5.2に移行したら、5.3への移行がより簡単になり、後で行うことができます。 –

答えて

1

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()); 
} 
0

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アプリケーションの一部だったのであれば、それはおそらく古いクラ​​スです。利用可能な新しいバージョンが存在する可能性があります。クラスにバグが見つかった場合は、新しいバージョンで対処することができます。

+0

クラスの詳細が助けになるかどうかはわかりません - ライブラリにバグがあります(負荷がかかっている可能性があります。2000年以降です) Officeの現在のバージョンに対してテストされていません)、私は、PHPを5.2と同じように動作させる方法が4 wrt例外(明らかに長期的な解決策ではありませんが、これには時間がかかります) –

+0

バグが何かを壊していない場合は、 'try' /' catch'を 'catch'ブロックで何も使用しないでください。これはあなたのコードが過去のエラーを引き継ぐことを可能にします。しかし、それができないのはエラーを修正することなので、実際にクラスそのものに問題があるなら、私は助けることができません。 (したがって、私は新しいバージョンをチェックすることを提案...または代替製品) – Spudley

関連する問題