<?php
header('Content-type:text/html;charset=UTF-8');
//function_exists('ini_set') && ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
register_shutdown_function(array('debug', 'shutdown_handler')); //function_exists('ini_set') && ini_set('display_errors', 'On');
set_error_handler(array('debug', 'error_handler')); // 设置错误处理方法
set_exception_handler(array('debug', 'exception_handler')); // 设置异常处理方法 class debug{
public static function shutdown_handler() {
if($e = error_get_last()) {
ob_clean();
echo "Shutdown: \n" . print_r($e);
}
} public static function error_handler($errno, $errstr, $errfile, $errline) {
defined('E_DEPRECATED') || define('E_DEPRECATED', 8192);
defined('E_USER_DEPRECATED') || define('E_USER_DEPRECATED', 16384); $error_type = array(
E_ERROR => '运行错误',
E_WARNING => '运行警告',
E_PARSE => '语法错误',
E_NOTICE => '运行通知',
E_CORE_ERROR => '初始错误',
E_CORE_WARNING => '初始警告',
E_COMPILE_ERROR => '编译错误',
E_COMPILE_WARNING => '编译警告',
E_USER_ERROR => '用户定义的错误',
E_USER_WARNING => '用户定义的警告',
E_USER_NOTICE => '用户定义的通知',
E_STRICT => '代码标准建议',
E_RECOVERABLE_ERROR => '致命错误',
E_DEPRECATED => '代码警告',
E_USER_DEPRECATED => '用户定义的代码警告',
); $errno_str = isset($error_type[$errno]) ? $error_type[$errno] : '未知错误';
$s = "[$errno_str] : $errstr";
if(true) {
throw new Exception($s);
}else{
// 线上模式放宽一些,只记录日志,不中断程序执行
if(in_array($errno, array(E_NOTICE, E_USER_NOTICE, E_DEPRECATED))) {
// log::write($s);
}else{
throw new Exception($s);
}
}
} public static function exception_handler($e) {
$trace = $e->getTrace();
if(!empty($trace) && $trace[0]['function'] == 'error_handler' && $trace[0]['class'] == 'debug') {
$message = $e->getMessage();
$file = $trace[0]['args'][2];
$line = $trace[0]['args'][3];
}else{
$message = '[程序异常] : '.$e->getMessage();
$file = $e->getFile();
$line = $e->getLine();
} var_dump($message);
}
} echo $d;
echo ed();

  

php错误消息捕获的更多相关文章

  1. php屏蔽错误消息

    定义和用法: error_reporting() 设置 PHP 的报错级别并返回当前级别. 函数语法: error_reporting(report_level) 如果参数 level 未指定,当前报 ...

  2. php异常及错误信息捕获并记录日志实现方法全解析

    php异常处理 什么是异常? PHP 5 提供了一种新的面向对象的错误处理方法.异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程.这种情况称为异常. 当异常被触发时,通常会发生: 当前代码 ...

  3. 允许asp.net MVC报 错说明: 访问服务此请求所需的资源时出错。服务器可能未配置为访问所请求的 URL。错误消息 401.2。: 未经授权

    运行mvc3程序报以下错误 详细报错如下: “/”应用程序中的服务器错误. 访问被拒绝. 说明: 访问服务此请求所需的资源时出错.服务器可能未配置为访问所请求的 URL. 错误消息 401.2.: 未 ...

  4. "错误消息 401.2。: 未经授权: 服务器配置导致登录失败。"的解决办法

    [详细报错如下]: “/”应用程序中的服务器错误. 访问被拒绝. 说明: 访问服务此请求所需的资源时出错.服务器可能未配置为访问所请求的 URL. 错误消息 401.2.: 未经授权: 服务器配置导致 ...

  5. 数据连接到 Web 服务 InfoPath 2010 窗体中的 SharePoint 服务器上运行时的错误消息:"401-未经授权"解决方案

    症状: 请考虑以下情形: Web 窗体发布到 SharePoint 服务器. 您创建 Microsoft InfoPath 2010 表单所在的 SharePoint 服务器上使用到位于数据的数据连接 ...

  6. knockout-validation不自动插入错误消息

    <div data-bind="validationOptions:{insertMessages:false}"> <div class="valid ...

  7. IE调试网页之四:F12 开发人员工具控制台错误消息 (Windows)(转载)

    F12 工具控制台可以报告在运行时期间发生的错误和信息消息.本文将介绍错误消息,并提供有关如何修正这些错误的建议. 简介 F12 工具控制台错误消息提供了一些代码(例如,SEC7111 或 HTML1 ...

  8. SpringMVC——类型转换和格式化、数据校验、客户端显示错误消息

    在介绍类型转换和格式化之前,我首先来介绍 <mvc:annotation-driven />. 需要导入的 schema: xmlns:mvc="http://www.sprin ...

  9. 在SQL2008R2查询分析器出错(在执行批处理时出现错误。错误消息为: 目录名称无效。)

    在用SQL2008R2查询分析器时 SELECT * FROM 表名; 出错: 在执行批处理时出现错误.错误消息为: 目录名称无效. 原因: 在打开查询分析器时,用360软件清空了临时文件(只是偶尔1 ...

随机推荐

  1. 项目源码--Android应用商店源码

      下载源码   技术要点: 1.互联网应用 客户端框架 2.综合应用开发所 有技术 3.安装应用的管理 4. HTTP网络通信技 术 5.下载安装.评论 框架 6.使用.版本升级 等统计方案 7.源 ...

  2. learning nodejs 2 - connect middleware

    学习了connect module nodejs 的中间件方式 var connect = require('connect'); var server = connect.createServer( ...

  3. uva 784 Maze Exploration 染色 搜索水题 DFS

    染色问题,其实就是看看图上某一点能扩散多少. 用DFS解决,因为BFS不是很熟 =-=...以后要多练. 提交后32ms,优化了一下,在递归前进行判定,优化到22ms,不是优化的很好... 代码: # ...

  4. Composer PHP 依赖管理工具

    composer 是 PHP 用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件. 依赖管理 ...

  5. merge into update

    如果要DML实现真正意义上的并发,在开始执行需要并发语句前,需要执行开启session并发  ALTER SESSION ENABLE PARALLEL DML;  在执行完语句后,需要执行关闭ses ...

  6. .NET 认识

  7. JMS - 消息确认

    消息确认机制 消息确认协议是保证消息传送的关键所在,同时,支持确认也是 JMS API 语义的要求.以下将分别从消息生产者.消息服务器.消息消费者的角度,来考察消息确认机制. 从消息生产者的角度考察 ...

  8. ActiveMQ(5.10.0) - 删除闲置的队列或主题

    方法一 通过 ActiveMQ Web 控制台删除. 方法二 通过 Java 代码删除. ActiveMQConnection.destroyDestination(ActiveMQDestinati ...

  9. Spring(3.2.3) - Beans(10): 生命周期

    Spring 容器可以管理 singleton 作用域 Bean 的生命周期,容器能够跟踪 Bean 实例的创建.销毁.管理 Bean 生命周期行为主要有两个时机: 注入 Bean 的依赖关系之后 即 ...

  10. SignalR 2.0 系列:SignalR的服务器广播

    英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.NET SignalR 2.0系列的翻译,这里是第八篇:SignalR的服务器广 ...