【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这一 ...
随机推荐
- 我所遭遇过的游戏中间件--Scaleform
我所遭遇过的游戏中间件---Scaleform Scaleform帮助开发人员利用现代系统的三维硬件加速性能创建电影品质的菜单.游戏内HUD,动画纹理.迷你游戏以及移动游戏与应用.Scaleform作 ...
- OTL使用指南
1 OTL简介 OTL 是 Oracle, Odbcand DB2-CLI Template Library 的缩写,是一个C++编译中操控关系数据库的模板库,它目前几乎支持当前所有的各种主流数据库, ...
- 如何使用Windows Library文件进行持久化
前言 想象一下,假设在你不知道的情况下,攻击者在你的计算机上放置了一个恶意文件.每当你访问桌面上某个文件夹时(例如Documents文件夹),都会执行一次该文件.这样的场景,通过利用一种鲜为人知的持久 ...
- 使用ECharts实现数据图表分析
一.ECharts介绍 实现对统计数据的图形分析之前用过JFreeChar,但它是用纯java实现编码繁琐且效果不佳,后来又使用过Fusioncharts 报表工具,它是基于Flash的图表组件.以X ...
- linux loop device介绍
在Linux中,有一种特殊的块设备叫loop device,这种loop device设备是通过影射操作系统上的正常的文件而形成的虚拟块设备.因为这种设备的存在,就为我们提供了一种创建一个存在于其他文 ...
- Boosted Tree
原文:http://www.52cs.org/?p=429 作者:陈天奇,毕业于上海交通大学ACM班,现就读于华盛顿大学,从事大规模机器学习研究. 注解:truth4sex 编者按:本文是对开源xg ...
- Bootstrap全局CSS样式之表格
.table--基础表格样式. .table-striped--给<tbody>之内的每一行添加斑马条纹样式: .table-bordered--为表格添加边框: .table-hover ...
- [Node.js]30. Level 6: Listen 'Question' from client, and then Answer the Question
Clients can also answer each other questions, so let's build that feature by first listening for the ...
- 在项目代码中载入cocostudio导出的动画并循环播放
须要在代码中引入#include "cocostudio/CocoStudio.h" using namespace cocostudio; ArmatureDataManager ...
- WebService SOAP、Restful和HTTP(post/get)请求区别
web service(SOAP) Webservice的一个最基本的目的就是提供在各个不同平台的不同应用系统的协同工作能力. Web service 就是一个应用程序,它向外界暴露出一个能够通过We ...