2

次のようなエラーを表示するために、 $errmsg 配列を持つ外部ファイルを使用しています。

'app_init' => 'Cannot initialize application',

条件を使用して、失敗時にメッセージを表示する関数を呼び出します。

if(!$condition)
{
$arraywithmessages->functionforfiltering($err,'app_init',$aim);
}

...ここで、$err はメッセージの配列で、$aim はエラーを発行する事前定義された方法 (電子メール、ビューなど) です。

例外処理を利用したいのですが、どこから始めればよいかわかりません。誰でも助けることができますか?これはうまくいかないようです:

try {
if (!$condition) {
throw new Exception('app_init');
}
// continue
} catch (Exception $e) {
$arraywithmessages->functionforfiltering($err,$e->getMessage(),$aim);
}
4

1 に答える 1

0

何を達成したいのか正確にはわかりませんが、try、catch は賢明に使用する必要があることを覚えておく必要があります。例外的な状況でのみ使用してください。そのように使用しない場合、それは GOTO コードです。

例外については、Exception クラスを拡張して独自の例外を作成し、それらを複数の catch ブロックでキャッチできることを思い出してください。finally ブロックもあります。

Exceptionのコンストラクタについて。$code適切なメッセージを表示するために使用できる2番目のパラメーターがあります。

$err = array(0x1 => 'my error app init');

try {
if (!$condition) {
    throw new Exception('app_init', 0x1);
}
// continue
} catch (Exception $e) {
  echo $err[$e->getCode()]; //it shouldn't be only echo it should do some tries to fix the code close streams etc. not just echo.
}

次の機能もあります set_exception_handler().

例外が try/catch ブロック内でキャッチされない場合、デフォルトの例外ハンドラーを設定します。exception_handler が呼び出された後、実行は停止します。

使用を検討してください。マニュアルでわかることはたくさんあります。

于 2013-07-08T07:28:13.650 に答える