网库网(www.wangkuwang.com)精品网站源码,织梦建站模版,游戏源代码分享平台

模板户源码

当前位置:首页 -> 下载中心 -> 软件工具 正文

你的PHP代码写错了!

时间:2019-03-20 08:27:48 [整站源码]作者:zhaopulei


Jake 凌云网络实验室

- 错误处理及调试 -

Hypertext Preprocessor

一、错误处理概述

1

常见错误类型

1.语法错误

语法错误是指编写的代码不符合PHP的编写规范。语法错误最为常见,也最容易修复。

2.运行错误

运行错误一般不会阻止PHP脚本的运行,但会阻止脚本做希望它做的任何事情。

3.逻辑错误

逻辑错误不但不会阻止PHP脚本运行,还不会显示出错误信息。

4.环境错误

环境错误是由PHP开发环境配置的问题引起的代码报错。

2

错误级别

上述列表的中的E_ERROR、E_NWARNING、E_ALL等错误都是PHP解释器自动触发的。实际上,除了PHP解释器自动触发的错误外,还可以根据不同的要求自觉定义错误,他们可以用于协助调试,在发布给其他人的代码生成不推荐使用的通知等。PHP的内置函数trigger_error()来触发错误,函数的声明如下:

bool trigger_error(string $error_msg [, int $error_type=E_USER_NOTICE])

在使用trigger_error()函数触发错误之前,一定要先使用ini_set()函数让错误显示,否则使用trigger_error()函数无法触发错误。

二、如何处理错误

1

显示错误报告

1.修改配置文件

通过直接配置php.ini文件来实现错误报告,代码如下:

error_reporting(E_ALL & ~E_NOTICE);

display_errors=on;

2.error_reporting()和ini_set()函数

通过PHP语言提供的error_reporting()和ini_set()函数来实现显示错误报告,代码如下:

<?php

error_reporting(E_ALL & ~E_NOTICE);

ini_set(display_error,1);

?>

3.die()函数

die()函数可以用来自定义输出错误信息,常用于业务逻辑的错误显示。

2

记录错误日志

1.修改配置文件

通过修改php.ini配置文件,可以直接设置记录错误日志的相关信息,具体代码如下:

error_reporting=E_ALL log_error=On error_log=/tmp/php_errors.log

2.error_log()函数

error_log()函数用于设置显示错误级别,E_ALL表示显示所有的错误,其函数声明如下:

bool error_log (string $message [, int $message_type=0 [, string $destination [, string #extra_headers]]])

上述声明中,$message表示要记录的错误信息。参数$message_type表示消息类型,该参数有两个值0或1,0表示发送到服务器地址,1表示使用mail()函数发送到指定邮件地址,$destination表示错误日志记录的位置,$extra_headers表示额外的头,当$message_type=1时才会使用。

3

自定义错误处理器

自定义错误处理器是通过set_error_handler()函数来实现的,其函数的声明如下:

mixed set_error_handler(callable $error_handler [, int $error_types=E_ALL | E_STRICT])

上述声明中,callable表示该参数$error_handler为回调函数类型。$error_handler是必须定义的参数,表示发生错误是运行的函数。$error_types用于指定处理错误的级别类型。其中,error_handler参数必须符合错误处理器函数的原型,原型如下:

function handler(int $errno, string $errstr [,string $errfile [, int $errline [, array $errcontext]]]);

上述代码中,参数$errno表示错误级别,$errstr表示错误说明,$errfile表示错误代码的文件名称,errline表示错误发生的代码行的行号,$errcontext表示在触发错误的范围内存在的所有变量的数组。其中前两个参数是必填参数。

三、异常处理

1

异常的概述与处理

在PHP5中加入了异常处理机制,它与错误的区别在于:异常定义了程序中遇到的非致命的错误。当程序遇到错误时,需要对异常进行捕获并进行处理。在PHP中可以通过throw关键字来抛出一个异常,如果要捕获和处理异常需要try...catch代码块来完成。

<?php

function checkNum($number){

if(Tnumber>1){

//抛出异常

throw new Exception("Balue must be I or below");

}

return true;

}

//可能触发异常的代码

try{

checkNum(2);

}

//抛出异常

catch(Exception $e){

echo Message:.$e->getMessage();

}

?>

2

自定义异常与多个catch模块

自定义异常只需要集成自Exception类,并添加自定义的成员属性和方法。一段脚本中可以使用多个异常,来检测多种情况。

<?php

class CustomException extends Exception{

public function errorMessage(){

//定义错误信息的显示格式

$errorMsg=Error on line.$heis->getLine().in.$this->getFlie().:<b>.$this->getMessage().</b>is not a valid E-Mall adress;

return $errorMsg;

}

}

$email="someone@example.com";

try{

//检查邮件地址是否合法

if(fliter_var($email, FILTER_VALIDATE_EMAIL)==FALSE){

//如果不合法抛出异常

throw new CustomException($email);

}

//检查邮件地址是否有字符串“example”

if(strpos($emil, "example")!==FALSE){

//如果存在则抛出异常

throw new Exception("$email is an example e-mail");

}

}

catch(CustomException $e){

//捕获我们自定义的错误类CustomException中抛出的邮件是否合法的异常信息

echo $e->errorMessage();

}

catch(Exception $e){

//捕获默认错误类Exception中抛出的邮件地址中是否有字符串“example”的异常信息

echo $e->getMessage();

}

?>

定义了一个自定义异常类CustomException,在try代码中根据用户输入的地址格式不同,会引发不同的异常,在代码中有两个catch块,分别用来捕获CustomException和Exception异常并处理。设置顶层异常处理器用于没有用try/catch块来捕获的异常,该函数声明如下:

callable set_exception_handler(callable $exception_handler)

该函数只有一个参数$exception_handler表示异常处理函数,该异常处理函数需要在被调用前定义。

四、PHP的调试技术

1

使用输出函数进行调试

1.print()函数用于输出字符串,语法格式如下:

int print(string $arg)

2.echo()函数用于输出一个或多个字符串,语法格式如下:

void echo(string $arg1 [, string $...])

3.print_r()函数用于打印一个变量易于理解的信息,语法格式如下:

bool print_r(mixed $exprission [, bool $return])

4.var_dump()函数用于打印变量的相关信息,语法格式如下:

void var_dump(mixed $expression [, mixed $expression [, $...]])

2

使用文件记录进行调试

file_put_contents()函数可以将程序的相关信息记录到某个文件中。这样程序中出现过的错误或是警告就会保存在文件中,以便以后进行信息的追溯。函数的声明如下:

int file_put_contents(string $filename, mixed $data [, int $flags=0 [, resource $context]])

其中file_put_contents()函数有3个参数,其中第一个参数$filename表示要被写入的文件名,第二个参数$data表示要写入的数据。第三个参数表示附件选项。


3

使用Xdebug进行调试

Xdebug工具是一个开放源代码的PHP程序调试器,用来调试和分析程序的运行状况。

1.首先下载Xdebug相应的版本,将下载好的安装文件php_xdebug-2.2.3-5.3-vc9.dll放到PHP的ext目录中,然后在php.ini文件中添加几行配置信息,具体如下:

[Xdebug]

zend_extension="C:lampphp5extphp_xdebug-2.2.3-5.3-vc9.dll"

xdebug.remote_enable=true

xdebug.remote_handler=dbgp

xdebug.remote_host=localhost

xdebug.remote_port=9000

上述信息配置完成后,需要重启Apache服务器使配置文件php.ini生效。

2.Xdebug的使用。首先创建一个出错的程序,该程序包含一个不存在的文件,具体如下:

<?php

testXdebug();

function testXdebug(){

reguireFile();

}

function requireFile(){

require_once(abc.php);

}

?>

打开IE浏览器,访问该文件,会发现错误信息变成了彩色,并且定位了出错的函数testXdebug(),因此Xdebug工具可以追踪代码出错的具体位置,并且有迅速定位快速排错的功能。

编辑:Jake Jin

排版:Jake Jin

更多精彩内容尽请关注

凌云网络实验室

    发送中

    本文标签:AutoTags插件服务端需要您提供购买者的账号和密码才能继续访问  折翼天使  莎莎源码  吾爱源码  其他源码 

    转载请注明来源:PHP手机端发卡多种支付商业版源码

    本文永久链接地址:https://www.suibianlu.com/11942.html

    郑重声明:
    本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
    若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
    如无法链接失效或侵犯版权,请给我们来信:admin@suibianlu.com

    栏目导航
    最新文章
    热门文章
    Top