【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这一 ...
随机推荐
- 数学图形之克莱因瓶(klein bottle)
克莱因瓶是一种内外两面在同一个曲面上的图形. 在数学领域中,克莱因瓶(德语:Kleinsche Flasche)是指一种无定向性的平面,比如二维平面,就没有“内部”和“外部”之分.克莱因瓶最初的概念提 ...
- Linux,Windows和UNIX的进程调度的分析
摘要 : 本文以Linux ,Unix ,Windows 操作系统为例,分析其进程调度策略,以期对进程调度过程有更深层次的认识 关键词 : 进程调度 优先级 时间片轮转 实时进程 分时技术 ...
- 利用Python爬虫爬取指定天猫店铺全店商品信息
本编博客是关于爬取天猫店铺中指定店铺的所有商品基础信息的爬虫,爬虫运行只需要输入相应店铺的域名名称即可,信息将以csv表格的形式保存,可以单店爬取也可以增加一个循环进行同时爬取. 源码展示 首先还是完 ...
- CKEditor && CKFinder 配置
准备 ...
- xshell实现端口转发
跳板机:10.127.10.1 目标机:10.127.4.25:8080 目的:出于安全,本地电脑是与远程服务器是网关不通的,为了能访问远程服务器数据必须做端口转发 SSH连接与身份认证为跳板机账号密 ...
- c语言基础,\r, \n, \r\n
Enumeration (or enum) in C Enumeration (or enum) is a user defined data type in C. It is mainly used ...
- 【Nodejs】理想论坛帖子下载爬虫1.04
一直想做一个能把理想论坛指定页范围的帖子都能完整下载下来的爬虫,但未能如愿. 主要的障碍在并发数的控制和长时间任务的突然退出,比如想下载前五页的帖子,分析后可得到大约15000个主贴或子贴,如果用回调 ...
- CheeseZH: Stanford University: Machine Learning Ex1:Linear Regression
(1) How to comput the Cost function in Univirate/Multivariate Linear Regression; (2) How to comput t ...
- weblogic.servlet.proxy.HttpProxyServlet 进行代理设置
1:代理访问服务器应用配置 A:192.168.0.11 B:192.168.0.12 访问:http://192.168.0.11:9001/test/test.jsp 代理服务直接代理访问: ht ...
- window中findstr命令的用法
http://www.netingcn.com/window-findstr-command.html findstr是window系统自带的命令,用途是查找指定的一个或多个文件文件中包含(或通过参数 ...