设为首页 收藏本站
查看: 609|回复: 0

[经验分享] PHP系列(七)PHP错误异常处理

[复制链接]

尚未签到

发表于 2018-12-13 09:01:49 | 显示全部楼层 |阅读模式
  1、Php错误报告级别
  1 E_ERROR 致命的运行错误。错误无法恢复,暂停执行脚本。
  2 E_WARNING 运行时警告(非致命性错误)。非致命的运行错误,脚本执行不会停止。
  4 E_PARSE 编译时解析错误。解析错误只由分析器产生。
  8 E_NOTICE 运行时提醒(这些经常是你代码中的bug引起的,也可能是有意的行为造成的。)
  error_reporting = E_ALL & ~E_NOTICE
  2、自定义php错误报告方式
  set_error_handler("myerrorfun");
  $mess ="";
  function  myerrorfun($error_type,$error_message,$error_file,$error_line){
  global $mess;
  $mess.="发生错误级别为{$error_type}类型、错误消息{$error_message},在文件夹{$error_file},第{$error_line}行。";
  }
  getType($a);
  echo"$mess";
  显示为:发生错误级别为8类型、错误消息Undefined variable: a,在文件夹C:\AppServ\www\index.php,第9行。
  set_error_handler($_type,$_message,$_errfile,$_errline) 函数设置用户自定义的错误处理程序,然后触发错误
  3、php记录错误日志
  log_errors = on 开启php日志
  error_log =syslog  将php日志写到系统上去。
  error_log = “c:/lamp/php_error.log”;自已指定一个存放目录、与上面相斥
  ini_set(“log_errors”,“on”); 在php开发文件里设置
  try{
  echo"开始";
  run();
  }catch(Exception $e){
  echo$e->getMessage()."";
  }
  //当try{}里面不成功就抛出catch里面的异常
  4、自定义异常类
  //自定义异常类、必须是系统类Exception的子类
  //如果继承Exception类、重写了构造方法、一定要调一下父类中被覆盖的方法/
  class  MyBtException extends  Exception{
  function__construct($mess){
  parent::__construct($mess);
  }
  functionchangBt(){
  echo"换个备胎";
  }
  }
  try{
  throw  new  MyBtException("车子胞胎");
  echo"路况很好!";
  }catch(MyBtException $e){
  Echo  $e->getMessage()."";
  $e->changBt()."";
  }
  5、自定义多个异常类
  //写出对应这个异常解决方法, 就是一下正常类的结构
  class MyBtException  extends  Exception{
  function__construct($mess) {
  parent::__construct($mess);
  }
  functionchangBt() {
  echo"换上备胎!";
  }
  }
  class  WcException  extends  Exception {
  functionpro() {
  echo"去公厕";
  }
  }
  class  NoException  extends  Exception {
  functionpro() {
  echo"买面色凑合一下!";
  }
  }
  Class  FlException  extends  Exception {
  functionpro() {
  echo"走小路!";
  }
  }
  

  class  Dm  {
  function gowc($bj) {
  if(!$bj){
  throw new WcException("马桶不好用了");
  }
  echo"哈哈,事儿办的很成功!";
  }
  function eat($time) {
  if(!$time){
  thrownew NoException("起来晚了,早餐没了!");
  }
  echo"吃的很好!";
  }
  function dri($dz) {
  if(!$dz){
  throw new  MyBtException("爆胎了");
  }
  echo"车开的不错!";
  }
  function run($yu) {
  if(!$yu){
  throw new  FlException("天下雪了, 高速封路了");
  }
  echo"高速很好走!";
  }
  }
  echo "早上起床";
  

  try{
  $dm =new  Dm();
  // 1. 上厕所  (马桶不好用了),去公厕
  $dm-> gowc(true);
  // 2. 吃早餐 (没有早点),买面包
  $dm-> eat(true);
  //3. 开车上班 (爆tai)         换下
  $dm->dri(true);
  //4. 上高速  (下雪)  小路
  $dm->run(false);
  } catch(MyBtException  $e) {   //  Exception $e = newException('');
  echo$e->getMessage()."";
  //自定义类中的解决方法调用,解决了问题
  $e->changBt()."";
  try {
  }catch(Exception$e) {
  }
  } catch(NoException $e) {
  echo$e->getMessage()."";
  $e->pro();
  } catch(WcException $e) {
  echo$e->getMessage()."";
  $e->pro();
  } catch(Exception $e) {
  echo$e->getMessage()."";
  //$e->pro();
  }
  echo"到公司开始工作";
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-650755-1-1.html 上篇帖子: php面向对象之抽象类和接口理解 下篇帖子: PHP系列(八)PHP日期时间
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表