前のトピック

< 制御構造

次のトピック

関数の呼び出し >

このページ

例外

Zephir はとても低レベルで例外を実装し、PHPに似た挙動と機能を提供します。

例外が投げられた場合、“catch” ブロックは例外を捕獲するために使うことができ、開発者は適切な処理を提供することができます。

var e;
try {

    // ここで例外が投げられます
    throw new \Exception("This is an exception");

} catch \Exception, e {

    // 例外を処理
    echo e->getMessage();
}

Zephir はブロック内で生成された全ての例外を単純に無視する 静かな “try” を提供します。

try {
    throw new \Exception("This is an exception");
}

補足した時に例外変数が必要無い場合は、安全にそれを提供しないようにすることができます:

try {

    // ここで例外が投げられます
    throw new \Exception("This is an exception");

} catch \Exception {

    // 例外を処理
    echo "An exception occur!";
}

例外の異なる型を捕らえるために1つの “catch” ブロックを使うことができます:

var e;
try {

    // ここで例外が投げられます
    throw new \Exception("This is an exception");

} catch \RuntimeException|\Exception, e {

    // 例外を処理
    echo e->getMessage();
}

Zephir は例外のメッセージであるかのように、文字あるいは静的な型の変数を投げることができます:

throw "Test"; // throw new \Exception("Test");
throw 't'; // throw new \Exception((string) 't');
throw 123; // throw new \Exception((string) 123);
throw 123.123; // throw new \Exception((string) 123.123);

Zephirの例外は、どこで例外が起きたかを知ることができるPHPと同じ機能を提供します。Exception::getFile() および Exception::getLine() は例外が投げられたZephirのコードでの場所を返します:

Exception: The static method 'someMethod' doesn't exist on model 'Robots'
File=phalcon/mvc/model.zep Line=4042
#0 /home/scott/test.php(64): Phalcon\Mvc\Model::__callStatic('someMethod', Array)
#1 /home/scott/test.php(64): Robots::someMethod()
#2 {main}
TOP
inserted by FC2 system