主要包括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的更多相关文章

  1. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  2. 如何从零基础学习VR

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...

  3. IOS基础学习-2: UIButton

    IOS基础学习-2: UIButton   UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...

  4. HTML5零基础学习Web前端需要知道哪些?

    HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...

  5. python入门到精通[三]:基础学习(2)

    摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...

  6. python入门到精通[二]:基础学习(1)

    摘要:Python基础学习: 注释.字符串操作.用户交互.流程控制.导入模块.文件操作.目录操作. 上一节讲了分别在windows下和linux下的环境配置,这节以linux为例学习基本语法.代码部分 ...

  7. CSS零基础学习笔记.

    酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...

  8. Yaf零基础学习总结5-Yaf类的自动加载

    Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...

  9. Yaf零基础学习总结4-Yaf的配置文件

    在上一节的hello yaf当中我们已经接触过了yaf的配置文件了, Yaf和用户共用一个配置空间, 也就是在Yaf_Application初始化时刻给出的配置文件中的配置. 作为区别, Yaf的配置 ...

  10. qml基础学习 Canvas画笔

    一.画布元素 自qt4.7发布qml以来,qml也在一直不断的完善中,在qt4时代使用qml时如果需要异形图,那我们只能让设计师来切图,这样的感觉是很不爽的,总感觉开发没有那么犀利.但是到了qt5这一 ...

随机推荐

  1. OpenCV学习(39) OpenCV中的LBP图像

    本章我们学习LBP图像的原理和使用,因为接下来教程我们要使用LBP图像的直方图来进行脸部识别. 参考资料: http://docs.opencv.org/modules/contrib/doc/fac ...

  2. sql server 将字符串分割成表函数 strsplitetotable

    在sql server里,调用存储过程时,经常需要将数据拼成字符串做为参数调用存储过程,而在储存过程中分割字符串虽然简单但麻烦,封装了该函数,可以将拼串分割成内存表返回,方便使用,返回的表字段从a,b ...

  3. java根据经纬度获取地址

    public class GetLocation { public static void main(String[] args) { // lat 39.97646 //log 116.3039 S ...

  4. STL List::sort() 解析

    看侯捷翻译那本<STL源码剖析>中list内置sort的算法,书中注释说是quick sort,看了半天没看明白, template <class T, class Alloc> ...

  5. 1-2Html与CSS的关系

    Html和CSS的关系 基于微信的后台开发须要掌握的基础知识包括有:HTML.CSS.JavaScript语言. 以下我们就来了解下这三门技术都是用来实现什么的: 1. HTML是网页内容的载体.内容 ...

  6. [Javascript] Ternary Conditionals

    /** Ternary Conditionals */ // //**Bad** // var isArthur = false; var weapon; if(isArthur){ weapon = ...

  7. Linux上安装Bugzilla4.4小记

    因项目需要,我受命在一台Linux服务器上搭建一个Bugzilla,进过一天的调试,这项任务总算完成了.现在可以肯定的说,安装过程不复杂,基本就是解压,填参数,执行命令.Bugzilla要跑起来,本机 ...

  8. Unable to resolve superclass of

    因为用了和Google map相关的类,而Google map是单独的library,需要导入之后才能使用,因此在manifest.xml文件中的<application></app ...

  9. uni - 介绍

    uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS.Android.H5.小程序等多个平台 优点:基于vue.mpvue.微信小程序 微信小程序AP ...

  10. 36个Android开发常用代码片段

    //36个Android开发常用代码片段 //拨打电话 public static void call(Context context, String phoneNumber) { context.s ...