码迷,mamicode.com
首页 > Web开发 > 详细

php 异常和错误处理机制

时间:2015-10-23 10:29:21      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

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()取消接管

运行图:

技术分享

简单处理fetal error的错误

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 "致命错误";

运行图:

技术分享

php 异常和错误处理机制

标签:

原文地址:http://my.oschina.net/kakoi/blog/520989

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!