【php】基础学习5
主要包括PHP的错误、异常处理和调试。具体如下:
<html xmlns=http://www.w3.org/1999/xhtml>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
</head>
<body>
<?php
/*
* PHP的错误、异常处理和调试
*/ /*
* 常见的错误类型:
* ① 语法错误
* ② 逻辑错误
* ③ 未定义错误
* ④ 环境错误
* ⑤ 运行错误
*/ /*
* 错误处理函数
* 在php中,可以使用trigger_error()函数来出发自定义的错误信息函数
* bool trigger_error(sring $error_msg [, int $error_type])
* error_msg是自定义错误提示信息;error_type是自定义错误类型,值为错误
级别中的常量,默认值为E_USER_NOTICE。
*/
$divisor=0;
$divided=10;
if($divisor!=0){
echo "ff";
}else{
//trigger_error('除数不可以为零!',E_USER_ERROR);
} /*
* 自定义错误页面
* 可以使用header()函数或include()函数来进一步实现错误页面的页面跳转或引用
*/
$divisor=0;
$divided=10;
if($divisor!=0){
echo "ff";
}else{
//include './base.php'; //前提是要有这个错误页面
} /*
* include()函数之再学习
* include语句包含并运行指定文件。
* include和require基本完全相同,除了返回的错误类型。
在文件未找到时include会发出一条警告;而require会发出一个致命的错误
* 当一个文件被包含时,其中所包含的代码继承了 include 所在行的变量范围。
从该处开始,调用文件在该行处可用的任何变量在被调用的文件中也都可用。
不过所有在包含文件中定义的函数和类都具有全局作用域。
* 例1:基本的include例子
vars.php
<?php
$color = 'green';
$fruit = 'apple';
?>
test.php
<?php
echo "A $color $fruit"; // A
include 'vars.php';
echo "A $color $fruit"; // A green apple
?>
* 例2:函数中的包含
如果 include 出现于调用文件中的一个函数里,
则被调用的文件中所包含的所有代码将表现得如同它们是在该函数内部定义的一样。
所以它将遵循该函数的变量范围。此规则的一个例外是魔术常量,它们是在发生包含之前就已被解析器处理的。
<?php
function foo(){
global $color;
include 'vars.php';
echo "A $color $fruit";
}
foo(); // A green apple
echo "A $color $fruit"; // A green
?>
*/ /*
* 错误日志
* (1)初始化PHP日志工具
有些常量是使用openlog(),closelog()和syslog()函数时所必须的,其形式为:
void define_syslog_variables(void)
使用日志函数之前需要先执行此函数、
* (2)打开日志连接
bool openlog ( string $ident , int $option , int $facility )
ident为增加到每一项的消息标示符
option确定生成消息时使用了哪些日志选项
facility指明记录日志的程序的类型。
* (3)关闭日志连接
int closelog(void);
* (4)向日志目标发送消息
syslog()函数负责向syslog发送一条定制信息。其形式为:
int syslog(int priority,string message);
priority指定syslog优先级,表示严重程度
message指定要记录的文本消息
* 例:
define_syslog_variables();
openlog("PHP5",LOG_PID,LOG_USER);
syslog(LOG_WARNING,"This is knife's blog!");
closelog();
以上代码将在message_syslog文件中生成类似下面的一条日志:
Dec 5 20:43:06 PHP5[30326]:This is knife's blog!
*/ /*
* PHP的基本异常类exception
* exception类的构造方法需要传入两个参数:错误信息和错误代码
* 除了构造方法,exception类还提供如下的内置方法:
① getMessage():返回传递给构造函数的信息
② getCode():返回传递给构造函数的代码
③ getFile():返回产生宜昌代码文件的完整路径
④ getLine():返回代码文件中产生代码的行号
⑤ getTrace():返回一个包含产生异常代码回退路径的数组
⑥ getTraceAsString():返回一个包含产生异常代码回退路径的数组,该信息降本格式化成一个字符串
⑦ __toString():显示一个exception对象,并且给出以上所有方法提供的信息,可以重载。
*/ /*
* try、throw和catch
* try:使用的异常函数应该位于try代码内
* throw:规定如何触发异常。每个throw必须至少对应一个catch
* catch代码块会捕获异常,并创建爱你一个包含异常信息的对象
*/ /*
* 创建自定义的exception类
* 该类必须是exception类的一个扩展
*/ /*
* 设置顶层异常处理器
* set_exception_handler()函数可设置处理所有未捕获异常的用户自定义函数
* 代码如下:
<?php
function myException($exception){
echo "<br/>Exception:",$exception->getMessage();
}
set_exception_handler('myException');
throw new Exception('Uncaught Exception occurred.');
?>
输出:Exception: Uncaught Exception occurred
*/ /*
* 异常的规则
*① 需要进行异常处理的代码应该放在'try'代码块内,以便捕获潜在的异常
*② 每个try或throw代码块都必须至少拥有一个对应的catcha代码块
*③ 使用多个catch代码块可以捕获不同种类的异常
*④ 可以再try代码块内的catcha代码块中再次抛出(re-thrown)异常
*⑤ 如果抛出了异常,就必须捕获它
*/
?>
</body>
</html>
【php】基础学习5的更多相关文章
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
- 如何从零基础学习VR
转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...
- IOS基础学习-2: UIButton
IOS基础学习-2: UIButton UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...
- HTML5零基础学习Web前端需要知道哪些?
HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...
- python入门到精通[三]:基础学习(2)
摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...
- python入门到精通[二]:基础学习(1)
摘要:Python基础学习: 注释.字符串操作.用户交互.流程控制.导入模块.文件操作.目录操作. 上一节讲了分别在windows下和linux下的环境配置,这节以linux为例学习基本语法.代码部分 ...
- CSS零基础学习笔记.
酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...
- Yaf零基础学习总结5-Yaf类的自动加载
Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...
- Yaf零基础学习总结4-Yaf的配置文件
在上一节的hello yaf当中我们已经接触过了yaf的配置文件了, Yaf和用户共用一个配置空间, 也就是在Yaf_Application初始化时刻给出的配置文件中的配置. 作为区别, Yaf的配置 ...
- qml基础学习 Canvas画笔
一.画布元素 自qt4.7发布qml以来,qml也在一直不断的完善中,在qt4时代使用qml时如果需要异形图,那我们只能让设计师来切图,这样的感觉是很不爽的,总感觉开发没有那么犀利.但是到了qt5这一 ...
随机推荐
- go语言基础之同级目录
1.同级目录 分文件编程(多个源文件),必须放在src目录 同一个目录,包名必须一样 设置GOPATH环境变量 go env 查看go相关环境路径 GO PATH: 在windows系统中,添加go环 ...
- xUtils框架的使用详解
一.xUtils简介 xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受 ...
- 【Word】Word 2010 设置边框底纹,粘贴漂亮的代码
参考资料: http://jingyan.baidu.com/article/48206aea1a3401216bd6b310.html http://wenku.baidu.com/link?url ...
- 如何配置Ubuntu 16.04 GRUB 2引导加载程序
正如你所知,GRUB 2 是大多数 Linux 操作系统的默认引导加载程序.GRUB 是 GRand Unified Bootloader 的缩写,它是 Linux 启动时首先要加载的一个程序,此后它 ...
- FrameWork逆向工程之MotioPI
在BI项目建设的过程中我们一般都是有备份的,而且这个是必须有的!特别是例如ETL Model,还有Data Model这一类的元数据,这些东西如果我们没有备份,而恰好的我们的开发模型又在某一天离我们而 ...
- 主成分分析(PCA)
相对与网上很多人分享的有关PCA的经历,我第一次接触PCA却不是从人脸表情识别开始的,但我所在的实验室方向之一是人脸的研究,最后也会回到这个方向上来吧. PCA(principal component ...
- XML基础以及用DOM4j读取数据
都知道,HTML被设计用来显示数据,XML被设计用来保存.数据传输.而我们平时经经常使用的无非是保存数据.读取数据.所以这里主要介绍XML相关基础内容.以及用DOM4j来存取XML的数据. 以下简单介 ...
- java核心技术36讲
https://time.geekbang.org/column/intro/82?utm_source=website&utm_medium=infoq&utm_campaign=8 ...
- mondrian4 kylin saiku 整合踩坑记录
1 先说了版本: Mondrian 4 .kylin2.2 .saiku 3.15 2 saiku 3.15 使用的xml是基于 mondrian4 的schema的xml.判断是不是mondrian ...
- Setsockopt选项
讨论 Setsockopt选项 http://c.chinaitlab.com/cc/ccjq/200806/752042_3.html 总而言之,如果你肯定能一起发送多个数据集合(例如HTTP响应的 ...