> 백엔드 개발 > PHP 튜토리얼 > 关于fatal error的一点疑问

关于fatal error的一点疑问

WBOY
풀어 주다: 2016-06-23 13:50:41
원래의
946명이 탐색했습니다.

function dothing(){
$jb->she();
}

dothing();
echo 321;

如上所帖代码,假如运行,想当然得会爆出 fatal error  she 这个方法on a non-object. 打不出后边得 321
现在是 我们不知道 dothing 到底有没有错。dothing对我们来说是个黑匣子。运行完dothing(); 还要echo  321  .

我得问题是,除了以下写法,是否还有更简易的写法来 打出 321

set_error_handler('error');
function dothing(){
$jb->she();
}


dothing();

function error($e){
echo 321;
exit();
}
?>


回复讨论(解决方案)

出错程序终止,后面的不执行。是正常的。
所以需要设置错误处理,当发生错误时,执行对应操作。

出错程序终止,后面的不执行。是正常的。
所以需要设置错误处理,当发生错误时,执行对应操作。



也就是说 拦截fatal error 或者不确定 有没有  fatal error 就必需靠set_error_handler了? 

是的,如果是异常可以用try catch来解决。
但fatal error会终止程序的,try catch不适用。

这种情况则可以用try catch

<?phpfunction dothing(){    $a = 1;    $b = 0;    if($b==0){        throw new  Exception ( 'Division by zero.' );    }}try{    dothing();}catch(Exception $e){    echo 'error:'.$e->getMessage();}echo 321;?>
로그인 후 복사
로그인 후 복사

这种情况则可以用try catch

<?phpfunction dothing(){    $a = 1;    $b = 0;    if($b==0){        throw new  Exception ( 'Division by zero.' );    }}try{    dothing();}catch(Exception $e){    echo 'error:'.$e->getMessage();}echo 321;?>
로그인 후 복사
로그인 후 복사

  不过 fatal error 就不行了。  不过既然知道是的确应该用  set_error_handler拦截 就可以了 。 
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿