42

例外をスローする関数をphpで宣言できますか?例えば:

public function read($b, $off, $len) throws IOException 
4

3 に答える 3

48

PHPDocコメントで@throwsを使用すると、IDEはドキュメントを表示するときにこの関数を例外をスローするものとして認識しますが、Javaとは異なり、Try{}catchブロックの実装を強制することはありません。おそらく、IDEの将来のバージョン(私はInteliJ 11を使用しています)は、不整合を認識するときにdoc(String}など)でマークされたJavaScriptタイプですでに行っているのと同じように、try{}catchが期待される場所をマークします。

要するに、スクリプト言語(PHP、JavaScript ..)でコーディングするときのようにDocletを使用することは、タイプセーフではなくコンパイルされていない言語の場合に、より安全なプログラミングのための補完的なツールになります。

このような:

enter code here
/**
 * Handle 'get' operations
 * @abstract
 * @param int $status reference for setting the response status
 * @param String $body reference for setting the response data
 * @return mixed
 * @throws Exception if operation fail
 */
function get(&$status, &$body) {
}

ここに画像の説明を入力してください

于 2013-04-28T07:39:50.243 に答える
16

私は質問を読み間違えました、Giladからの以下の答えを見てください(それは受け入れられるべきです)。

前の答え:

関数の本体から新しい例外をスローできます。それはすべてここで説明されています

例:

<?php
function inverse($x) {
    if (!$x) {
        throw new Exception('Division by zero.');
    }
    else return 1/$x;
}

try {
    echo inverse(5) . "\n";
    echo inverse(0) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

// Continue execution
echo 'Hello World';
?>
于 2010-07-24T13:36:30.623 に答える
5

SPLに付属する例外のリストについては、SPLExceptionsを参照してください。

独自の例外を作成する場合:

PHPの例外ページから:

スローされるオブジェクトは、ExceptionクラスのインスタンスまたはExceptionのサブクラスである必要があります。そうでないオブジェクトをスローしようとすると、PHPの致命的なエラーが発生します。

そうです、独自の例外を作成することは可能です。少し読むだけで、あなたが望むことを達成するのに役立ちます。

于 2010-07-24T13:49:15.740 に答える