【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这一 ...
随机推荐
- [转]室友靠打游戏拿30万offer,秘密竟然是……
又是一年秋招季,苦逼的小编还天天泡在图书馆里刷PAT,室友大佬却已经到处拿offer.上周某室友已经成功拿到杭州某企业年薪30W的offer,小编虚心向其讨教,某室友一脸兴奋地告诉小编,HR让面试者们 ...
- LRU Cache leetcode java
题目: Design and implement a data structure for Least Recently Used (LRU) cache. It should support the ...
- Java 线程内异常处理
Thread的run方法是不抛出任何检查型异常(checked exception)的,但是它自身却可能因为一个异常而被终止,导致这个线程的终结.最麻烦的是,在线程中抛出的异常即使使用try...ca ...
- 合并JavaScript数组的N种方法
这是一篇简单的文章,关于JavaScript数组使用的一些技巧.我们将使用不同的方法结合/合并两个JS数组,以及讨论每个方法的优点/缺点. 让我们先考虑下面这情况: var a = [ 1, 2, 3 ...
- 可进可退,jQuery图片、视频、flash播放插件prettyPhoto使用记录
一.prettyPhoto简介 prettyPhoto是一款基于jquery的轻量级的lightbox图片播放浏览插件,它不仅支持图片,还同时支持视频.flash.YouTube.iframe和aja ...
- Java基础(三):修饰符、运算符、循环结构和分支结构
一.Java修饰符: Java语言提供了很多修饰符,主要分为以下两类:访问修饰符和非访问修饰符.修饰符用来定义类.方法或者变量,通常放在语句的最前端. 1.访问控制修饰符: Java中,可以使用访问控 ...
- 【翻译自mos文章】CRS显示 正在执行的db instance 是offline状态
CRS显示 正在执行的db instance 是offline状态 转自: CRS shows Running Instance Status as OFFLINE (Doc ID 1673397.1 ...
- Cognos中新建SQLserver数据源的步骤
1:配置-数据源连接-新建数据源-指定数据源名称 2:选择数据库类型,暂时不配置jdbc 3:指定服务器,数据库名称,登陆用户名和密码 4:测试 5:测试OK(OLE DB类型的) 6:返回上一步 , ...
- iptables日志与limit参数
在处理工作问题的时候需要查看防火墙的日志,由于默认日志都是在系统日志里/var/log/messages里面.需要对rsyslog做设置. 首先编辑配置文件/etc/rsyslog.conf如下: # ...
- 字符串的公共前缀对Mysql B+树查询影响回溯分析
年前项目组接微信公众号. 上线之后,跟微信相关的用cid列的查询会话的SQL变慢了几十倍!思考这个问题思考了非常久.从出现以来一直是我心头的一个结.cid这一列是建了索引的,普通的cid列更新 ...