您的位置:首页 > 编程语言 > PHP开发

php错误类型总结和调试方法【原创】

2014-11-07 00:00 706 查看
php错误类型总结和调试方法

[b]语法错误[/b]

定义:语句不符合语言规则称为语法错误

语法错误在在讨论解释性语言中称为解析错误,在讨论讨论编译性语言称为编译错误

实例
</p>
<p>Parse error:parse error,unexpected ‘‘’in home/book/public.php on line 2</p>
<p>


错误由以下代码产生
</p>
<p>$data = data('m.d.y);</p>
<p>

</p>
<p>$data = data(m.d.y’);</p>
<p>


以上代码会产生下面错误
</p>
<p>Parse error:parse error,unexpected $end in home/book/public.php on line 3</p>
<p>


据说这种错误很难找,在多个文件组合产生这种错误时候!我是php新手反正没遇到过!

[b]运行时错误[/b]

语法错误,解析器可以检测到它!但是运行错误一般出现在脚本交互的过程中或者其他的实践或条件下。

实例
</p>
<p>require ('filename.php');</p>
<p>


这是一个完全有效的php语句,没有任何语法错误,但是可能产生运行时错误,当这个文件不存在时,或者文件没有读的权限时会出现以下错误
</p>
<p>Fatal error: mmain() [function.require]: failed opening required 'filename.php'(include_path='.:uer/local/li/php') in /home/book/error.php on line 1</p>
<p>

</p>
<p>$i=10;<br />
$j=0;<br />
$k=$i/$j</p>
<p>


会产生以下警告
</p>
<p>waining :Division by zero in /home/book/div.php on line 3</p>
<p>


会产生运行时错误总结:

[b]调用不存在的函数
[/b]

function abc()写成了function ab()
</p>
<p>Fatal error :Call to undefined function: nonexistent_function() in /home/book/public/error.php on line 1</p>
<p>


函数参数适用不正确
</p>
<p>waining :Wrong parmenter count for function abc() in /home/book/public/error.php on line 1</p>
<p>

</p>
<p>if($i==1){<br />
    abc()<br />
}</p>
<p>


如果abc这个函数有错误,当$i==1时错误才会报出!php不会解析当前没必要的代码,所以我们要仔细测试

读写文件
大部分错误跟fopen()一样,返回值false表示失败

与Mysql或其他数据交互
mysqli_connect错误

1.无法连接到“localhost”上的mysql服务器

2.未知的musql服务器主机“hostname”

3.用户username@localhost访问被拒绝,使用密码:Yes

这些错误返回值false,很容易检测到

连接到网络服务
当在网络上连接其他机器和这些机器上的软件时,应该意识到系统的某些部分会经常出错。从一台机器连接到另一台机器依赖于很多我们无法控制的设备和服务。

检查输入数据失败
通常我们会对用户的一些数据假设,如果输入的数据不是原先所料的数据类型,它可能会导致错误。

[b]逻辑错误[/b]
</p>
<p>for($i=0; $i<10; $++);<br />
{<br />
    echo "hello hou <br/>";<br />
}</p>
<p>


上面echo代码其实只执行了一次

[b]错误报告常量[/b]
序号
错误代码
错误级别
1
E_ERROR
严重错误,不可恢复。例如内存不足、位置异常或类重复声明错误
2
E_WARNING
一个经常发生的错误类型。表示一些操作错误。例如丢失函数参数,连接数据库失败,除数为0等错误。
3
E_PARSE
编译时发生的解析错误,会导致在PHP执行前退出。意味着如果一个文件因为解析错误运行失败,程序将停止运行。
4
E_STRICT
错误级别是唯一不包含在E_ALL常量中。这是为了让PHP4到PHP5的迁移更加容易;你可以在PHP5软件系统中运行PHP4代码。
5
E_NOTICE
运行代码在操作一些未知的动作,例如读取未定义的变量。
6
E_CORE_ERROR
内部错误,扩展启动失败导致的,会导致PHP运行退出。
7
E_COMPILE_ERROR
编译错误,与E_PARSE不同,这个错误会导致PHP运行退出。
8
E_WARNING_ERROR
编译时的警告,可能是使用者发生语法错误。
9
E_USER_ERROR
用户定义错误导致PHP退出执行。用户定义错误(E_USER_*)不是来自PHP本身,而是包含在脚本中。
10
E_USER_WARNING
用户定义错误不会导致PHP退出执行。脚本可以使用它来通知一个执行失败,执行失败PHP也会用E_WARNING来通知。
11
E_USER_NOTICE
用户定义的通告可以用来在脚本中可能存在错误。
[b]调试方法[/b]

1.使用变量帮助调试

2.改变错误报告位置

3.触发自定义错误

4.巧妙的处理错误

调试详细地址:点击这里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: