zoukankan      html  css  js  c++  java
  • PHP之 错误 与 异常处理

    PHP的错误报告有三种:

    1.错误,语法解析错误,致命错误
    2.警告
    3.注意

    错误 -> 致命错误,会终止已下程序的执行,语法错误的话,PHP压根就没执行
    警告 -> 他不会终止运行,但会影响结果
    注意 -> 不会终止执行,也不会影响结果


    为了让用户得到更好的体验,我们屏蔽所有错误的输出,是输出,而不是显示
    但这样的话,管理员也看不到错误了。

    页面上不显示错误,而将错误生成一个日志,提供给管理员查看。

    error_reporting(~E_ALL)将所有输出都屏蔽掉了,自然,管理员也看不到了

    我不要屏蔽所有输出,我只要屏蔽所有显示

    ini_set('display_errors','off');表示屏蔽了所有的页面上错误的显示,但没有屏蔽错误的输出

    ini_set('log_errors','on');    //开启日志写入功能
    ini_set('error_log','myerror.log'); //日志的存放位置
    ini_set('display_errors','off');    //屏蔽页面显示
    error_reporting(E_ALL);    //输出所有错误
    echo 123;
    echo $str;    //这个会出现一个注意,表示未声明变量
    echo date();  //警告,没有传参
    echo dae();   //致命错误,找不到这个函数
    echo 123;

    异常:

    PHP语言里,所有异常都必须自己抛出,而不像 JAVA 之类的语言会自动

    抛出异常,这也正是 PHP源代码里很少看到异常处理语句的原因之一。

    <?php
    
    // 如果PHP内置了处理被除数不能为零的异常类,那么是不需要手动抛出的
    
    $a = 5;
    $b = 0;
    try {
        echo $a / $b;
    } catch (Exception $e) {
        echo '发现异常了';        
    }
    
    // 这种情况下,是不会执行捕获语句的,页面上依旧显示报错信息:Warning: Division by zero
    <?php
    
    //PHP无法自动抛出异常,所以需要我们手动抛出
    
    $a = 5;
    $b = 0;
    try {
        if ($b == 0) throw new Exception('被除数为零');
        echo $a / $b;
    } catch (Exception $e) {
        echo '产生异常:'.$e->getMessage();
    }

    页面输出:  产生异常:被除数为零

  • 相关阅读:
    算法中时间复杂度概括——o(1)、o(n)、o(logn)、o(nlogn)
    Docker笔记
    struts框架
    引包问题
    官网下载
    WebService
    答辩问题整理
    小程序转发功能的实现
    小程序自定义组件及传值
    vue 点击下拉框
  • 原文地址:https://www.cnblogs.com/xingyazhao/p/7162211.html
Copyright © 2011-2022 走看看