有两种方式可以在 PHP 中以异常的方式处理错误:

① PHP 内置的 ErrorException类(也是 Exception 类的子类)

 <?php
function exception_error_handler($errno, $errstr, $errfile, $errline){
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
} set_error_handler('exception_error_handler');

try{
//出发异常
echo gettype();
}catch(Exception $e){
echo $e->getMessage();
}

输出:

用过这种方式把警告信息以异常信息输出出来了。

自定义异常类来处理 PHP 中的错误

 <?php
class ErrorToException extends Exception{
public static function handler($errno, $errstr){
throw new self($errstr, $errno);
}
} set_error_handler(array('ErrorToException', 'handler')); try{
//触发错误,未定义的变量,产生通知级别的错误
echo $test;
}catch(ErrorToException $e){
echo $e->getMessage();
}

输出:

还可以使用 set_error_handler 设定错误级别:

 <?php
class ErrorToException extends Exception{
public static function handler($errno, $errstr){
throw new self($errstr, $errno);
}
} set_error_handler(array('ErrorToException', 'handler'));
//设定错误级别,例如只有警告级别的错误才以异常的形式进行捕获
set_error_handler(array('ErrorToException', 'handler'), E_USER_WARNING|E_WARNING); try{
//触发错误,未定义的变量,产生通知级别的错误
echo $test;
}catch(ErrorToException $e){
echo $e->getMessage();
}

输出:

也就是说,通知级别的错误不交给自定义异常类来处理。

trigger_error 也能触发异常:

 <?php
header('content-type:text/html; charset=utf-8'); class ErrorToException extends Exception{
public static function handler($errno, $errstr){
throw new self($errstr, $errno);
}
} set_error_handler(array('ErrorToException', 'handler'));
//设定错误级别,例如至哟哟警告级别的错误才以异常的形式进行捕获
set_error_handler(array('ErrorToException', 'handler'), E_USER_WARNING|E_WARNING); try{
//触发错误,未定义的变量,产生通知级别的错误
echo $test;
echo '<hr>';
//gettype();
echo '<hr>';
trigger_error('test', E_USER_WARNING);
}catch(ErrorToException $e){
echo '异常';
echo $e->getMessage();
}

输出:

PHP 错误与异常 笔记与总结(17 )像处理异常一样处理 PHP 错误的更多相关文章

  1. PHP 错误与异常 笔记与总结(12 )异常

    ① 异常的概念:异常和错误的区别 PHP 部分借鉴了 C++ 和 JAVA 中的异常处理机制.PHP 中的异常是指 程序运行和预期不太一致,与错误是两个不同的概念. ② 异常的语法结构 [例1] &l ...

  2. PHP 错误与异常 笔记与总结(4)通过 trigger_error 触发 PHP 错误

    [错误抑制符@] 除了 php.ini 中 error_reporting 和 display_errors 的设置.error_reporting() 函数.ini_set() 函数 外,还可以使用 ...

  3. PHP 错误与异常 笔记与总结(10)错误处理器测试

    关联文件:myErrorHandler.php (上一篇) 先测试通知级别的错误的自定义处理: testErrorHandler.php <?php require_once 'myErrorH ...

  4. 《深入Java虚拟机学习笔记》- 第17章 异常

    <深入Java虚拟机学习笔记>- 第17章 异常

  5. PHP 错误与异常 笔记与总结(16 )自定义异常处理器

    可以使用自定义异常处理器来处理所有未捕获的异常(没有用 try/catch 捕获的异常). set_exception_handler():设置一个用户定义的异常处理函数,当一个未捕获的异常发生时所调 ...

  6. PHP 错误与异常 笔记与总结(15 )使用观察者模式处理异常信息

    使异常处理变得更灵活.可观察,可以使用设计模式中的观察者模式. 文件 ① 定义观察者的接口 ExceptionObserver.php: <?php /* 给观察者定义的规范 */ interf ...

  7. PHP 错误与异常 笔记与总结(13 )自定义异常类

    针对不同的异常,进行不同的处理,可以通过自定义异常类记录特定的异常信息来处理不同类型的异常.自定义异常类通过继承基类(Exception),对基类进行扩展. 自定义异常类 <?php heade ...

  8. PHP 错误与异常 笔记与总结(8)自定义错误处理函数 set_error_handler()

    通过 Set_error_handler() 函数设置用户自定义的错误处理函数. 步骤: ① 创建错误处理函数 ② 设置不同级别调用函数 ③ Set_error_handler() 函数制定接管错误处 ...

  9. PHP 错误与异常 笔记与总结(5)配置文件中与错误日志相关的选项 && 将错误记录到指定的文件中

    [记录错误(生产环境)] php.ini: ① 开启 / 关闭 错误日志功能 log_errors = On ② 设置 log_errors 的最大字节数 log_errors_max_len = 其 ...

  10. PHP 错误与异常 笔记与总结(3)PHP 配置文件(php.ini)中与错误相关的选项 与 设置错误级别

    [PHP 配置文件中与错误相关的选项 ] 选项 描述 error_reporting 设置错误报告的级别 display_errors 是否显示错误 log_errors 设置是否将错误信息记录到日志 ...

随机推荐

  1. 第一章 用记事本搭建C#程序

    1.新建记事本:using System;class Text{ Console.WriteLine("你好如鹏网"); Console.WriteLine("www.r ...

  2. 图像边缘检测——Sobel算子

    边缘是图像最基本的特征,其在计算机视觉.图像分析等应用中起着重要的作用,这是因为图像的边缘包含了用于识别的有用信息,是图像分析和模式识别的主要特征提取手段. 1.何为“图像边缘”? 在图像中,“边缘” ...

  3. Android自定义progressBar

    通过继承系统ProgressBar实现 效果图 实现 HorizontalProgressBarWithNumber 自定义属性 <?xml version="1.0" en ...

  4. MVC中session创建并获取问题

    有两个ActionResult分别为A和B,如下 public ActionResult A() { Session["test"]="123"; return ...

  5. 在有EditText控件的AlertDialog对话框中自动弹出输入法

    我们先回顾一下创建AlertDialog的一般步骤. 一 inflate AlertDialog的布局文件   例如,其中dlg就是我们的布局文件.    View layout = LayoutIn ...

  6. 学SEO你其实只需要半个钟

    网站上线之前: 关键词的分析以及选择: 关键词在我们网站的每个页面:首页,栏目页,文章都存在,它定位了你的网站的这个页面是做什么的,有什么内容,也是SEO中的最重要的部分. 网站必须确定并且设置好关键 ...

  7. Duilib非官方更新贴~

    GitHub: https://github.com/movsb/duilib.git 2014-07-20: [76a04d1]    [BugFix] 修复无法解析类似<Control/&g ...

  8. 面向服务的体系结构(SOA)——(3)关于BPM

    什么是BPM 很多情况下企业当中所提供的服务不是由一个分布式业务流程就可以完成的,整个服务的提供需要多个分布式流程有机的组合,于是BPM就应运而生了.要将现有的服务通过配置.编排(关于配置与编排的区别 ...

  9. DbHelper-SQL数据库访问助手

    using System; using System.Data; using System.Data.SqlClient; namespace Whir.Software.Framework.Ulti ...

  10. oracle sql developer数据表注释为乱码问题---解决

    参考网址:http://blog.163.com/jackie_howe/blog/static/19949134720121126879265/ 内容: 在windows中创建一个名为“NLS_LA ...