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 作为超类应该放到最后捕获

//如果提前捕获这个超类,后面的捕获就终止了,而且不提供 针对性的信息处理

运行图

0a563cc398408dd96a4f3cc51aeb310b.png

自定义 异常处理函数(只能捕获到异常和非致命的错误,致命的错误还是会挂掉)

function  customError($errno,$errstr,$errfile,$errline){

echo "错误代码[${error}]${errstr}"."";

echo "错误所在代码行:{$errline}文件{$errfile}"."";

echo "PHP版本",PHP_VERSION,"(",PHP_OS,")"."";

}

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

运行图:

5863bb040501396490753f4c525e2dea.png

简单处理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 "致命错误";

运行图:

04a1249aa8604bab3fd86465c8507ac7.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值