<?php
//语法错误
//运行时的错误
//逻辑错误
//php的错误报告级别
// display_errors;
// ini_set("display_errors", "On");

// error_reporting();
// error_reporting = E_ALL &~ E_NOTICE; //除了什么以外

error_reporting(0); //屏蔽系统的错误信息

function error_handler($errLevel, $errMsg, $errFile, $errLine){
    switch($errLevel){
        case E_NOTICE;
        case E_USER_NOTICE;
            $errType = "notice";
            break;
        case E_WARNING;
        case E_USER_WARNING;
            $errType = "warning";
            break;
        case E_ERROR;
        case E_USER_ERROR;
            $errType = "error";
            break;
        default:
            $errType = "UnKnown";
    }
    printf("错误的级别为:%s,错误的信息为:%s,发送在%s的%s行", $errLevel, $errMsg, $errFile, $errLine);
}

set_error_handler("error_handler"); //用这个函数来调用自己定义错误函数
// echo $err; //如何屏蔽这些系统的错误级别信息
echo 3/0;
trigger_error("这是一个自定义的错误", E_USER_ERROR); //用户自定义一个错误
?>

<?php
/* 写错误日志
先配置php.ini:
error_reporting = E_ALL
display_errors = Off
log_errors = On
log_errors_max_log = 1024
error_log = G:/myerror.log //去除前面的分号就是开启
*/
error_log("这是一个错误信息"); //用这个函数,就可以向我们配置好的日子文件中发送错误信息
?>

<?php
//try{}catch(){}抛出异常学习
//创建可抛出一个异常的函数
function checkNum($number){
    if($number>1){
        throw new Exception("Value must be 1 or below");
    }
    return true;
}

//在 "try" 代码块中触发异常
try{
    checkNum(2); //这时候会抛出一个异常,这个异常将会被下面的catch捕获
    //如果没有异常,返回的就是true,就会执行下面的代码
    //如果异常被抛出,那么下面一行代码将不会被输出,跳到catch()捕获这个异常
    echo 'If you see this, the number is 1 or below';
}catch(Exception $e){ //$e 是一个对象
    //捕获异常
    echo "<pre>";
    print_r($e);
    echo "</pre>";
    // echo $e->getCode();
    echo 'Message: ' .$e->getMessage();
}
?>

<?php
//再看一个实例
try{
    $i = 5;
    if($i < 10){
        throw new exception("$i must greater than 10"); //抛出异常
    }
}catch(Exception $e){ //捕获异常
    // echo $e->getMessage();
    throw new exception('errorinfo');
}

?>

php自定义错误处理和try{}catch(){}学习的更多相关文章

  1. ReactiveX 学习笔记(8)错误处理和 To 操作符

    Error Handling Operators Operators to Convert Observables 本文的主题为对 Observable 进行错误处理的操作符以及转换 Observab ...

  2. php错误处理和php异常处理机制

    php错误处理  当我们开发程序时,有时候程序出现了问题,我们就可以用以下几种办法找出错误.  开发阶段:开发时输出所有的错误报告,有利于我们进行程序调试  运行阶段:我们不要让程序输出任何一种错误报 ...

  3. 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧

    目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...

  4. PHP学习笔记三十三【自定义错误处理器】

    <?php //自定义错误处理器 //$errorno 错误号 //$errmes错误信息 //这两个参数是必须的 function my_error($errorno,$errmes) { e ...

  5. Flask的错误日志处理和|ORM操作

    flask有个很人性化的处理就是 你的错误的输出是可以通过错误日志来自定义  ,让你输入的错误不再是“大黄页”, 通过 errorhandler()来装饰函数之后你的所有的输入错误的函数你都会进入这个 ...

  6. PHP自定义错误处理

    自定义错误报告的处理方式,可以完全绕过标准的PHP错误处理函数,这样就可以按照自己定义的格式打印错误报告,或改变错误报告打印的位置(标准PHP的错误报告是哪里发生错误就在发生位置处显示).以下几种情况 ...

  7. 解决 ASP.NET Core 自定义错误页面对 Middleware 异常无效的问题

    我们基于 Razor Class Library 实现了自定义错误页面的公用类库(详见之前的随笔),但是在实际使用时发现如果在 middleware 中发生了异常,则不能显示自定义错误页面,而是返回默 ...

  8. C++复习8.异常处理和RTTI

    C++异常处理和RTTI技术 20130930 1.异常处理的基本知识 C语言中是没有内置运行时错误处理机制,对于错误发生的时候使用的几种处理机制: 函数返回彼此协商后统一定义的状态编码来表示操作成功 ...

  9. ASP.NET Core中显示自定义错误页面-增强版

    之前的博文 ASP.NET Core中显示自定义错误页面 中的方法是在项目中硬编码实现的,当有多个项目时,就会造成不同项目之间的重复代码,不可取. 在这篇博文中改用middleware实现,并且放在独 ...

随机推荐

  1. Linux命令总结_文件查找之grep

    1.grep命令 grep一般格式为:grep [选项]基本正则表达式[文件]这里基本正则表达式可为字符串,字符串或变量应该用双引号,模式匹配用单引号 选项: -c  只输出匹配行的计数 -i  不区 ...

  2. jQuery加载外部文件的方式get、post、ajax、load的区别及异步加载的实现

    一.$.post(url, [data], [callback], [type])  url (String) : 发送请求的URL地址. data (Map) : (可选) 要发送给服务器的数据,以 ...

  3. ThinkPHP框架的部署

    1.将ThinkPHP框架的框架文件放到想要放置的地方,与创建的应用文件夹同级 2.vhost文件中设置虚拟目录 3.在hosts文件中配置 4.在应用目录中创建入口文件index.php 5.在入口 ...

  4. opengl画圆

    通过这个例子可以更加深刻的了解割圆术的原理,明白如何的化曲为直,且看代码: #include <windows.h> //#include <GLUT/glut.h> #inc ...

  5. mac使用指南:brew的安装

    官网 http://brew.sh/ 安装并且下载brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/ ...

  6. MySql之触发器【过度变量 new old】

    trigger是由事件触发某个操作.这些事件包括insert语句.update语句和delete语句.当数据库执行这些事件时,就会激活触发器执行相应的操作. [1]只有一个执行语句 create tr ...

  7. poj2387 初涉最短路

    前两天自学了一点点最短路..看起来很简单的样子... 就去kuangbin的专题找了最简单的一道题练手..然后被自己萌萌的三重for循环超时虐的不要不要的~ 松弛虽然会但是用的十分之不熟练... 代码 ...

  8. Linux 静态IP动态IP设置

    1.设置动态IP ifconfig eth0 192.168.1.12 设置后立即生效,重启机器后就无效了 2.设置静态IP 编辑文件 /etc/sysconfig/network-scripts/i ...

  9. 合金装备V 幻痛 制作技术特辑

    合金装备V:幻痛 制作特辑 资料原文出自日版CGWORLD2015年10月号   在[合金装备4(Metal Gear Solid IV)]7年后,序章作品[合金装备5 :原爆点 (Metal Gea ...

  10. wordpress 添加自定义菜单到管理面板(wp-admin)

    如果你在做 wordpress 主题或插件的开发,通常需要在后台dashboard管理面板添加菜单方便用户做主题设置或插件设置.这篇文章要讨论的问题就是怎么样加这个菜单,加在哪里? 添加顶级菜单项 a ...