PHP异常处理、错误捕获和自动加载的一些总结
<?php
// 设置顶层异常处理器
set_exception_handler('exceptionHandler');
function exceptionHandler($e) {
echo $e -> getMessage();
} // register_shutdown_function可捕获 FATAL ERROR 级别的错误
register_shutdown_function('fatalHandler');
function fatalHandler() {
$error = error_get_last();
$errno = $error["type"];
$errfile = $error["file"];
$errline = $error["line"];
$errstr = $error["message"];
$str= "errno:" . $errno . "-errstr:" . $errstr . "-errfile:" . $errfile . "-errline:" . $errline;
echo $str;
} // set_error_handler只能捕获 NOTICE/WARNING级别的错误
set_error_handler('errorHandler');
function errorHandler($errno,$errstr,$errfile,$errline) {
$str= "errno:" . $errno . "-errstr:" . $errstr . "-errfile:" . $errfile . "-errline:" . $errline;
echo $str;
} // 设置自动装载函数
spl_autoload_register('splAutoloadRegister');
function splAutoloadRegister($name) {
print '[['. $name .']] can not autoload';
echo "\n";
} function checkNum($number) {
if($number>1) {
// 异常构造函数
// Value must be 1 or below:异常描述
// 400:异常错误码
// new Exception('parentOne', 401):该异常的上一个异常
throw new Exception("Value must be 1 or below", 400, new Exception('parentOne', 401));
}
return true;
} try {
checkNum(2);
} catch (\Exception $e) {
// 获取异常消息内容
echo $e -> getMessage();
// 返回异常链中的前一个异常(返回的是一个Throwable接口类, Exception是Throwable的一个子类)
// 可以使用$e -> getPrevious() -> getCode()获取上一个异常的信息
echo $e -> getPrevious();
// 获取异常错误码
echo $e -> getCode();
// 创建异常时的程序文件名称
echo $e -> getFile();
// 获取创建的异常所在文件中的行号
echo $e -> getLine();
// 获取异常追踪信息
print_r($e -> getTrace());
// 获取字符串类型的异常追踪信息
echo $e -> getTraceAsString();
// 将异常对象转换为字符串
echo $e -> __toString();
}
PHP异常处理、错误捕获和自动加载的一些总结的更多相关文章
- php错误处理,自动加载,以及栈堆内存和运行模式堆浅解 (转)
		Php错误处理 Php错误级别: E_ERROR 致命错误,会终止脚本运行.值为1 E_WARNING 警告错误,给出提示,不会终止运行值为2 E_PARSE 编译时的语法解析错误,解析错误仅仅由分析 ... 
- ThinkPHP5.0源码学习之注册自动加载
		ThinkPHP5框架的自动注册加载流程如下: 
- cad.net之ACAD移植到GCAD的自动加载问题
		将acad.pgp,lsp,fas,vlx,名称增加一份gcad.pgp,lsp,fas,vlx.涉及系统加载用. Lisp的拖拉加载在gcad无法通过lastprompt获取命令历史栏最后一行(含路 ... 
- final关键字,类的自动加载,命名空间
		final关键字 1.final可以修饰方法和类,但是不能修饰属性: 2.Final修饰的类不能被继承: 3.Fina修饰的方法不能被重写,子类可以对已被final修饰的父类进行访问,但是不能对父类的 ... 
- thinkphp5源码剖析系列1-类的自动加载机制
		前言 tp5想必大家都不陌生,但是大部分人都停留在应用的层面,我将开启系列随笔,深入剖析tp5源码,以供大家顺利进阶.本章将从类的自动加载讲起,自动加载是tp框架的灵魂所在,也是成熟php框架的必备功 ... 
- 让Lua自己把文件夹下面的所有文件自动加载起来吧
		没有想到我也做了一回标题党.其实这里边说的自动还是有夸大其词的部分.其实只是指定文件夹,然后根据指定文件夹数据,加载目录下边的内容而已. 怎么来进行Lua文件的加载 一般情况下,相关的功能需要给他创建 ... 
- PHP 自动加载规范PSR-4
		.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ... 
- 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间
		[源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ... 
- CI框架源码阅读笔记9 CI的自动加载机制autoload
		本篇并不是对某一组件的详细源码分析,而只是简单的跟踪了下CI的autoload的基本流程.因此,可以看做是Loader组件的分析前篇. CI框架中,允许你配置autoload数组,这样,在你的应用程序 ... 
随机推荐
- 【小程序】小程序开发自定义组件的步骤>>>>>>>>>小程序开发过程中报错:jsEnginScriptError
			报错:jsEnginScriptError VM6342: jsEnginScriptError Component is not found in path "component/spac ... 
- Springboot中Aspect实现切面(以记录日志为例)
			前言今天我们来说说spring中的切面Aspect,这是Spring的一大优势.面向切面编程往往让我们的开发更加低耦合,也大大减少了代码量,同时呢让我们更专注于业务模块的开发,把那些与业务无关的东西提 ... 
- 9款国内外垂直领域的在线作图工具:那些可以替代Visio的应用!【转】
			http://www.csdn.net/article/2015-02-12/2823939 摘要:现在越来越多的创业公司都希望提升办公的效率,今天介绍的几款也能提升办公效率,不过它们都属于垂直领域的 ... 
- MySQL表最大能达到多少?
			MySQL 3.22限制的表大小为4GB.由于在MySQL 3.23中使用了MyISAM存储引擎,最大表尺寸增加到了65536TB(2567– 1字节).由于允许的表尺寸更大,MySQL数据库的最大有 ... 
- Nginx配置,413 Request Entity Too Large错误解决
			今天有同事找我,说图片上传之后,不知道去哪里了.分析了一下问题,找到原因之后做了处理,这里简要记录一下. 问题原因: 1.首先后台log并无错误信息: 2.捡查了一下浏览器,发现network中有报错 ... 
- Log4j/Log4j2自定义Appender来实现日志级别计数统计及监控
			一.简述 本文主要讲如何基于Log4j2来实现自定义的Appender.一般用途是用于Log4j2自带的Appender不足以满足我们的需求,或者需要我们对日志进行拦截统计等操作时,需要我们自定义Ap ... 
- linux apache2部署php
			apache2 doc http://blog.csdn.net/actor1999/article/details/44802519 #apache sudo apt-get install apa ... 
- Guava future
			减少主函数的等待时间,使得多任务能够异步非阻塞执行 ListenableFuture是可以监听的Future,它是对java原生Future的扩展增强.Future表示一个异步计算任务,当任务完成时可 ... 
- Windows下python3生成UTF8的CSV文件和sha256sum踩坑记录
			CSV的坑 在Ubuntu下是简单的写入完事 import csv ... with open(filename, 'w') as output: f = csv.writer(output) f.w ... 
- 自建证书配置HTTPS服务器
			1.写这篇博客的初衷是因为最近iOS9出来了,苹果官方默认要求使用HTTPS,所以自己想整一个HTTPS服务器,也想好好了解一下HTTPS通信,也知道了HTTPS其实就是在HTTP的基础上加上了SSL ... 
