`
txf2004
  • 浏览: 6887668 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

PHP5的异常处理机制[13]--获得异常相关的更多信息

阅读更多

获得异常相关的更多信息

以下是用来格式化输出异常信息的代码:

index_php5_6.php

<?php
// PHP 5
class Front {
static function
main() {
try {
$helper = new RequestHelper(array(cmd=>'realcommand'));
$helper->runCommand();
} catch (
Exception $e) {
print
"<h1>".get_class($e)."</h1>\n";
print
"<h2>{$e->getMessage()}
({$e->getCode()})</h2>\n\n"
;
print
"file: {$e->getFile()}<br />\n";
print
"line: {$e->getLine()}<br />\n";
print
$e->getTraceAsString();
die;
}
}
}
Front::main();
?>

如果你的realcommand类无法被实例化(例如你将它的构造函数声明为private)并运行以上代码,你可以得到这样的输出:

ReflectionException

Access to non-public constructor of class realcommand (0)

file: c:\MyWEB\Apache\htdocs\php5exception\index_php5_4.php
line: 31
#0 c:\MyWEB\Apache\htdocs\php5exception\index_php5_5.php(25): CommandManager->getCommandObject()

#1 c:\MyWEB\Apache\htdocs\php5exception\index_php5_6.php(10): RequestHelper->runCommand('realcommand')

#2 c:\MyWEB\Apache\htdocs\php5exception\index_php5_6.php(23): Front::main()

#3 {main}

你可以看到getFile()getLine()分别返回发生异常的文件和行数。GetStackAsString()方法返回每一层导致异常发生的方法调用的细节。从#0一直到#4,我们可以清楚地看到异常传递的路线。

你也可以使用getTrace()方法来得到这些信息,getTrace()返回一个多维数组。第一个元素包含有异常发生的位置,第二个元素包含外部方法调用的细节,直到最高一层的调用。这个数组的每个元素本身也是一个数组,包含有以下几个键名(key)

key

含义

file

产生异常的文件

line

产生异常的类方法所在行数

function

产生异常的函数/方法

class

调用的方法所在类

type

调用类型:'::' 表示调用静态类成员
'->'
表示实例化调用(先实例化生成对象再调用)

args

类方法接受的参数

分享到:
评论

相关推荐

    php权威编程

    PHP核心贡献者Derick Rethans三大高手合力而作:本书几乎囊括了PHP 5所有的新特性,包括PHP 5所有的新功能,PHP 5的面向对象编程方法和设计模式,以及PHP 5的新的数据库连接处理、错误处理和XML处理等机制。...

    PHP+MySQL动态网站开发

    理论部分包括PHP技术概述和基本语法、字符串和正则表达式、数组和函数、文件和目录操作、PHP的异常处理机制、XML文件操作、Session和Cookie会话管理、Smarty模板引擎、Ajax技术和MySQL数据库。实战部分包括在线投票...

    PHP和MySQL Web开发第4版pdf以及源码

    12.3 获取更多关于数据库的信息 12.3.1 使用SHOW获取信息 12.3.2 使用DESCRIBE获取关于列的信息 12.3.3 用EXPLAIN理解查询操作的工作过程 12.4 数据库的优化 12.4.1 设计优化 12.4.2 权限 12.4.3 表的优化 ...

    PHP和MySQL WEB开发(第4版)

    12.3 获取更多关于数据库的信息 12.3.1 使用SHOW获取信息 12.3.2 使用DESCRIBE获取关于列的信息 12.3.3 用EXPLAIN理解查询操作的工作过程 12.4 数据库的优化 12.4.1 设计优化 12.4.2 权限 12.4.3 表的优化 12.4.4 ...

    PHP和MySQL Web开发第4版

    12.3 获取更多关于数据库的信息 12.3.1 使用SHOW获取信息 12.3.2 使用DESCRIBE获取关于列的信息 12.3.3 用EXPLAIN理解查询操作的工作过程 12.4 数据库的优化 12.4.1 设计优化 12.4.2 权限 12.4.3 表的优化 ...

    ShopNC多用户商城 V2.1 UTF8 无演示数据版.zip

    自ShopNC商城系统V2.0发布后受到了大家的广泛...23、底层架构进行了调整及优化:包括系统入口处理机制、缓存机制、异常处理机制、对外API处理、模板处理等;前台部分复杂业务流程进行了分模块化处理,使之更容易扩展。

    贝云cms内容管理系统 v1.3

    主要特性:基于tp5.0.,遵循PSR-2、PSR-4规范,Composer及单元测试,异常严谨的错误检测和安全机制,详细的日志信息,为你的开发保驾护航;减少核心依赖,扩展更灵活、方便,支持命令行指令扩展;出色的性能和REST支持...

    EaglePHP框架1.9

    EaglePHP,是一款开源、高效、面向对象的PHP ...15、优化Exception处理机制,抛出异常后在其他的代码块处进行try catch捕捉。 如有任何疑问和建议请在官网留言反馈。 http://www.eaglephp.com/pub/index.php/message

    【Lin-CMS内容管理系统框架 v0.3.6】内置用户管理/权限管理/日志系统等常见功能

    如何做全局的异常处理?API 的结构如何?前端结构应该如何组织?这些问题 Lin CMS 已经给出了解决方案。当然,如果你不喜欢 Lin 给出的架构,那么自己去实现自己的 CMS 架构也是可以的。但通常情况下,你确实无需再...

    ShopNC多用户商城 2.1 GBK 20120716.zip

    商城系统从代码结构上对SEO做了增强,支持商品展示页面关键信息的独立设置,更易于搜索引擎收录,为站长带来更多流量。 一键分享: 商城平台可以自主管理收藏与分享按钮,默认安装腾讯微博、新浪微博、人人网、...

    pecl-languages-v8js:用于 PHP 的 V8 Javascript 引擎

    此扩展使用 V8 隔离来确保多个 V8J 实例之间的分离,并使用新的基于隔离的机制来抛出异常,因此需要 3.24.6 或更高版本。 PHP 5.3.3+ 这个 V8 引擎的嵌入式实现使用线程锁定,因此它应该在启用 ZTS

    ThinkPHP5.0完全开发手册

    ThinkPHP5.0版本是一个颠覆和重构版本,采用全新的架构思想,引入了更多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载,支持composer,并针对API开发做了大量的优化,包括路由、日志、异常、模型、...

    贝云cms(bycms)内容管理系统 v1.3.zip

    基于tp5.0.9,可无缝升级之5.0.10,遵循PSR-2、PSR-4规范,Composer及单元测试,异常严谨的错误检测和安全机制,详细的日志信息,为你的开发保驾护航;减少核心依赖,扩展更灵活、方便,支持命令行指令扩展;出色的性能...

    dayrui-xunruicms-master.zip

    5、动态缓存技术让动态页面新增支持缓存,让采用动态页面模式的网站访问速度更快,效率更高 6、全站支持HTTPS传输协议,更安全,支持小程序数据请求的URL规范 7、表单增加“csrf_token”验证功能,防护更强 三...

    Leaps PHP Framework 2.0.1

    Leaps PHP Framework是一个性能卓越并且功能丰富的轻量级PHP开发框架,宗旨就是让WEB应用开发更简单、更快速。 Leaps 2.0.1 更新日志:2015-06-25 修复PHP5.4不兼容的正则表达式 主要特性如下: 基于MVC...

    bycms内容管理系统-PHP

    基于tp5.1,遵循PSR-2、PSR-4规范,Composer及单元测试,异常严谨的错误检测和安全机制,详细的日志信息,为你的开发保驾护航;减少核心依赖,扩展更灵活、方便,支持命令行指令扩展;出色的性能和REST支持、远程...

    java开源包5

    ,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 ...

    java开源包1

    ,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 ...

Global site tag (gtag.js) - Google Analytics