一个php的异常处理程序,功能很简单当发生重大错误时,写日志并友好提示用户.
代码:
<?php //exceptionHandle.php xiecongwen 20140620 //define('DEBUG',true); /** * Display all errors when APPLICATION_ENV is development. */ if (defined('DEBUG')) { error_reporting(E_ALL); ini_set("display_errors", 1); } if(!defined('DEBUG')){ /** * 当发生重大错误时 写日志 并友好提示用户 * (PS:只所以将代码写在这里,是因为在其他地方注册时,出现问题无法调用配置函数.待完善...) */ function shutdownHandler() { /** * 写日志 此处直接写在根目录下shutdownlog.txt */ $lasterror = error_get_last(); if($lasterror){ $error = strval(date("Y-m-d h:i:s")).'=>'."[SHUTDOWN] lvl:" . $lasterror['type'] . " | msg:" . $lasterror['message'] . " | file:" . $lasterror['file'] . " | ln:" . $lasterror['line']."\n"; file_put_contents('./log/'.date("Ymd").'shutdownlog.txt',$error,FILE_APPEND); //友好提示用户 ob_end_clean(); die('对不起,我出错了!'); } } register_shutdown_function('shutdownHandler'); } if(!defined('DEBUG')){ function errorHandler($errno, $errstr = '', $errfile = '', $errline = 0) { //写日志 $exception = new \ErrorException($errstr, 0, $errno, $errfile, $errline); $msg = strval(date("Y-m-d h:i:s")).'=>'.'Type:'.getErrTypeName($errno).' '.getMsg($exception); file_put_contents('./log/'.date("Ymd").'error.txt',$msg,FILE_APPEND); switch ($errno) { case E_NOTICE:return ; case E_DEPRECATED:return; } throw $exception; } function getErrTypeName($errno) { switch ($errno) { case E_NOTICE:return 'E_NOTICE' ; case E_DEPRECATED:return 'E_DEPRECATED'; default:return $errno; } } function exceptionHandler($ex) { $msg = strval(date("Y-m-d h:i:s")).'=>'.getMsg($ex); file_put_contents('./log/'.date("Ymd").'exception.txt',$msg,FILE_APPEND); } www.jbxue.com function getMsg($exception) { //获取最准确的异常 while($exception->getPrevious())$exception = $exception->getPrevious(); $msg = ' Message: '.$exception->getMessage(); $msg .= ' File: '.$exception->getFile().':'.$exception->getLine()."\n"; return $msg; } set_error_handler('errorHandler',E_ALL); set_exception_handler('exceptionHandler'); } ?>
相关推荐
通过对这些源码的分析,我们可以更深入地理解PHP异常处理机制的细节和实际操作。 总之,PHP的异常处理机制是程序健壮性的重要保障。通过合理地使用`try-catch-finally`结构和自定义异常类,我们可以有效地管理错误...
比如,下面的代码展示了一个基本的异常处理流程: ```php <?php $path = "D://in.txt"; try { file_open($path); } catch (Exception $e) { echo $e->getMessage(); } function file_open($path) { if (!file_...
知识点二:PHP异常处理 异常处理是PHP中处理运行时错误的另一种机制。它是一种更加结构化和面向对象的错误处理方式。当发生错误时,可以通过throw关键字抛出一个异常,然后通过try-catch块来捕获和处理这个异常。...
在PHP异常处理中,还存在一个重要的方法getPrevious(),它用于处理嵌套异常。当一个异常被抛出后,开发者可以调用这个方法来访问被嵌套的原始异常。这对于诊断和记录错误详情非常有用,因为它能够提供异常发生的完整...
今天我们将要分享的是一个PHP异常处理程序示例,其核心功能是在发生重大错误时,既向开发人员写入错误日志,也向用户显示友好的错误提示。 在开始之前,我们需要了解几个概念和知识点: 1. 错误和异常 在PHP中,...
有时候,可能需要在捕获异常后对其进行一些处理,然后再重新抛出,以便更高级别的处理程序能够捕获它。这可以通过在 `catch` 块中再次使用 `throw` 来实现。 #### 7. 设置顶层异常处理器 使用 `set_exception_...
异常处理是另一种更结构化、更可控的错误处理方式,它允许程序在遇到错误时抛出一个异常对象,然后通过try-catch块来捕获并处理这个异常。示例如下: ```php try { if (!file_exists('test.txt')) { throw new ...
PHP异常处理机制为开发者提供了一种强大且灵活的方式来处理程序运行过程中可能出现的各种错误和异常情况。这种机制的主要优点在于能够将错误处理逻辑与正常业务逻辑分离,使得代码更加模块化、易于理解和维护。 ###...
SlashTrace一个非常棒的错误和异常处理程序。 您将它挂钩到您的错误处理例程(或让它自己设置以捕获所有错误和异常),捕获并显示有关您的错误许多好消息。 它适用于普通的浏览器请求,也适用于AJAX和CLI。
当一个异常被抛出时,正常的代码执行流程会被中断,转而进入异常处理流程。PHP中的异常处理主要通过try、catch和throw关键字来实现。 `try`块是异常处理的起点,它包含可能抛出异常的代码。如果在这个区域内发生了...
而异常处理提供了一种结构化的方法来处理程序中的异常情况,它允许程序员在遇到问题时抛出一个异常,然后由调用栈中的其他代码捕获并处理这个异常,保持了程序的整洁和逻辑性。 异常是通过`throw`语句抛出的,通常...
总结来说,PHP的异常处理机制提供了对运行时错误的有序管理,使得开发者能够更有效地控制程序的流程,确保即使在出现错误的情况下,也能优雅地处理和恢复。通过理解并熟练运用异常处理,可以显著提高代码的稳定性...
全局异常处理是软件开发中的一个重要概念,特别是在大型项目或复杂系统中,确保程序在遇到错误时能够优雅地处理并提供反馈至关重要。这篇文章将深入探讨全局异常处理的实现,包括其重要性、常见方法以及如何在不同...
在PHP5中,面向对象编程的一个重要特性是异常处理,它提供了一种更优雅、更规范的方式来处理程序运行过程中的错误。本章将深入探讨PHP5的异常处理机制及其相关概念。 5.1 PHP中的错误信息 在PHP中,错误分为不同...
综上所述,“tp5yi异常处理类资源”是一个关于如何在ThinkPHP5.1框架中有效管理异常的教程或代码集合,包含了如何自定义异常类、设置全局异常处理器、捕获和处理异常等内容,对于提升PHP开发者的错误处理能力和代码...
在PHP编程中,异常处理是一种重要的错误处理机制,它允许开发者以更为优雅的方式处理程序运行时可能出现的问题。从PHP 5.1.0版本开始,引入了Exception类,使得异常处理更加规范和灵活。异常处理的基本语法结构包括...
在PHP 5及以上版本中,引入了异常处理机制,为处理程序运行时的意外情况提供了一种更加结构化的方法。 一、错误处理 传统的错误处理通常依赖于`error_reporting`、`set_error_handler`等函数,它们会根据错误级别...
PHP的异常处理机制提供了一种优雅的方式来处理程序中的错误。当出现异常时,程序会停止当前流程,抛出一个异常对象,然后通过try-catch块捕获并处理异常,防止程序崩溃。这有助于提高程序的健壮性和可维护性。 ...