基底クラス PEARの例外処理 [raiseError]
基底クラス PEAR の関数に raiseError という関数があります。この関数を使って例外を発生(例外オブジェクトを作成)させることが出来ます。
生成されるオブジェクトは、基本的に PEAR_Error オブジェクトになりますが PEAR_Error に類するメッセージを持たないカスタムオブジェクトを指定することも出来ます。
カスタムオブジェクトを指定するには、コンストラクタでそのクラスを指定します。
//PEARクラスのコンストラクタ
function PEAR($error_class = null)
{
if ($error_class !== null) {
$this->_error_class = $error_class;
}
}
このカスタムオブジェクトの指定は、 raiseError の引数によって切り分けられています。
function &raiseError($message = null,
$code = null,
$mode = null,
$options = null,
$userinfo = null,
$error_class = null,
$skipmsg = false)
{
if ($error_class !== null) {
$ec = $error_class;
} elseif (isset($this) && isset($this->_error_class)) {
$ec = $this->_error_class;
} else {
$ec = 'PEAR_Error';
}
if ($skipmsg) {
$a = &new $ec($code, $mode, $options, $userinfo);
return $a;
} else {
$a = &new $ec($message, $code, $mode, $options, $userinfo);
return $a;
}
}
ドキュメントにもあるのですが、$skipmsgとカスタムオブジェクトの指定を正しく指定しないと動作しなさそうです。
まとめ
raiseError は、エラーオブジェクトを返し $skipmsg を true に指定する場合、コンストラクタ又は$error_classパラメータにメッセージを取らないカスタムオブジェクトを指 定する必要がある。