ホームページ >バックエンド開発 >PHPチュートリアル >PHP 例外およびエラー処理メカニズム
PHP は例外を手動でスローすることによってのみ例外をキャッチできます
class emailException extends Exception{ //定义魔术方法 ,直接输出对象的信息 public function __toStirng(){ $error = "Code:{$this->getCode()},message:{$this->getMessage()} line:{$this->getLine()},file:{$this->getFile()}"; return $error; }}function reg($i){ if($i>0){ throw new emailException("错误"); }}try{ reg($i=6);}catch(emailException $e){ echo $e; echo $e->getMessage();}catch(Exception $e){ $e->getMessage();}//此处需要注意 exception 作为超类应该放到最后捕获//如果提前捕获这个超类,后面的捕获就终止了,而且不提供 针对性的信息处理
実行図
カスタマイズされた例外処理関数 (例外と致命的でないエラーのみをキャッチでき、致命的なエラーは引き続きハングします)
function customError($errno,$errstr,$errfile,$errline){ echo "<b>错误代码</b>[${error}]${errstr}"."</br>"; echo "错误所在代码行:{$errline}文件{$errfile}"."</br>"; echo "PHP版本",PHP_VERSION,"(",PHP_OS,")"."</br>";}set_error_handler("customError",E_ALL|E_STRICT); $a = array('o'=>2,4,6,8);echo $a[o]; //错误的代码//set_error_handler()函数会接管php内置的错误处理,//可以在同一个页面使用 restore_error_handler()取消接管
実行チャート:
胎児エラーの簡単な対処法
class Shutdown{ public function stop(){ if(error_get_last()){ print_r(error_get_last()); } die('Stop.'); } } register_shutdown_function(array(new Shutdown(),'stop')); //此函数会在php程序终止或者die时触发一个函数 $a = new a(); //错误代码 echo "致命错误";
ランニングチャート: