一:错误类型举例

1.语法错误:一般是语句最后缺少分号、缺少单引号或双引号、for循环或函数缺少花括号、缺少变量标示符$

2.定义错误:一般是调用不存在的变量、调用不存在的函数或者类

3.逻辑错误:代码的逻辑错误导致的功能无法实现

4.运行错误:调用不存在的文件、数据库服务器,数据库,数据表和数据引发的错误、读写文件、运算错误

5.环境错误:一般为操作系统、php版本、php配置

二:程序调试方法

1.应用die()语句调试

<?php
$conn=mysql_connect("localhost","root","111") or die("服务器连接失败:".mysql_error()); //连接服务器
echo "服务器连接成功!<br>";
mysql_select_db("db_databas21",$conn) or die ("数据库连接失败:".mysql_error()); //连接数据库
echo "数据库连接成功!";
mysql_query("set names utf8"); //设置数据库编码格式
?>

使用die()语句进行程序调试时,查询出错误后会终止程序的运行,并在浏览器显示出错之前的信息和错误信息。常用在连接数据库中

2.应用mysql_error()语句输出SQL语句中的错误信息

<?php
$sql="select * from tb_logs "; echo mysql_error();

*mysql_error()函数只返回最近一次执行的错误脚本

3.应用try{}catch{}语句抛出并捕获异常

<?php
try{ // 检测异常
$fp=@fopen("text.txt","r"); // 在此处通过@屏蔽了错误的输出
if($fp){
fwrite($fp ,"文件权限设置错误!"); // 写入数据
fclose($fp); // 关闭文件
}else{
throw new Exception(); // 抛出异常
}
}catch(Exception $e){ // 捕获并处理异常
echo "读取文件时出现错误!";
die ("错误出现的行数: " . $e->getLine() . "<br/>"); // 返回错误出现的行数
}
?>

*try的功能是检测异常,catch的功能是捕获异常,throw的功能是抛出异常

PHP异常处理Exception类的构造方法接受两个参数:错误信息和错误代码

Exception类提供了许多内置方法,用于输出各种错误信息;

三:错误处理技巧

1.隐藏错误

@符号在任何表达式前面使用,即可以在任何有值或者可以计算出值的表达式之前使用

2.自定义错误页面

定义错误信息通常使用if语句来完成,如果没有错误执行什么代码,如果有错误使用header()函数,跳转至显示错误信息的页面

3.解决数据库出现乱码问题

在处理页面加上:mysql_query('set names utf-8');

PHP错误调试的更多相关文章

  1. 【转】段错误调试神器 - Core Dump详解

    from:http://www.embeddedlinux.org.cn/html/jishuzixun/201307/08-2594.html 段错误调试神器 - Core Dump详解 来源:互联 ...

  2. 转 Python3 错误和异常/ Python学习之错误调试和测试

    ########sample 0 https://www.cnblogs.com/Simon-xm/p/4073028.html except: #捕获所有异常 except: <异常名> ...

  3. iOS 内存错误调试(EXC_BAD_ACCESS)

    内存错误crash现场: Thread堆栈: 有可能是访问被释放对象造成,根据现场并不能找到具体哪个对象出现内存错误. 1.开启僵尸对象调试 Edit Scheme->Debug->Dia ...

  4. Linux的段错误调试方法

    linux段错误的调试方法 相关博文: http://blog.csdn.net/htianlong/article/details/7439030 http://www.cnblogs.com/pa ...

  5. 段错误调试神器 - Core Dump详解

    一.前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件某一行, 而是没有任何信息, 使得我们的调试变得 ...

  6. 极度郁闷的错误调试——ajax jquery

     今天在写一个简单邮件验证的页面时,本来以为二十分钟的事情,却调试了一个半小时,简直郁闷,具体的错误如下: 在页面中,有一段如下的代码: <td colspan="3"> ...

  7. PDO错误调试

    在服务器上用PDO操作数据库,怎么都获取不到数据,query语句返回null,但是同样的代码在本地运行无误.SO,开始找bug. <?php $host='localhost'; $dbname ...

  8. python之错误调试

    无论谁写的程序,必定会存在bug,解决bug需要我们去调试程序.于是乎,在Python中,就会好几种调试手段,如print.assert.logging.pdb.pdb.set_trace() 一.使 ...

  9. 百度搜索_Selenium WebDriver 环境搭建和错误调试_chromedriver_win32必须下载否则无法测试chrome

    转自:  http://www.360doc.com/content/14/0821/18/597197_403634783.shtml zTree 东西不多,我也一直使用着原始的人工测试手段,随着内 ...

  10. python-8错误调试测试

    1-错误处理 import logging try: print('try.......') r = 10/0 except ValueError as e: print('result:', e) ...

随机推荐

  1. Codeforces Gym101473 E.Dangerous Dive (2013-2014 ACM-ICPC Brazil Subregional Programming Contest)

    代码: 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cmat ...

  2. Android学习--持久化(一) 文件存储

    持久化之   文件存储 这里把Android持久化全都整理一下,这一篇文章先简单的说一下文件的存储,通过下面一个简单的Demo,理解一下这个文件存储,先说说下面Demo的思路: 1.创建EditTex ...

  3. usaco-Subset Sums

    题意: 给出一个1-n的数列,求把它分为两组数使得两组数的和相等的方案数. 分析: 如果可能分成两组,那么(n+1)n/2一定为偶数,且n%4=2或3.可以设dp[i][j]表示从1-i中的数拼出的方 ...

  4. workflow engine Ruote初体验之一(概念)

    由于最近自己写点小东西,需要有工作流程管理方面的应用,所有的环境为Ruby on rails,所有在选择流程引擎的时候选择了ruote,但是对于ruote是完全陌生的,所以在这里记下点滴,如果理解的不 ...

  5. Linux内核Crash分析

    转载自:http://linux.cn/article-3475-1.html 在工作中经常会遇到一些内核crash的情况,本文就是根据内核出现crash后的打印信息,对其进行了分析,使用的内核版本为 ...

  6. Jsp2.0自定义标签(第二天)——自定义循环标签

    今天是学习自定义标签的第二天,主要是写一个自定义的循环标签. 先看效果图: 前台页面Jsp代码 <%@ page language="java" contentType=&q ...

  7. dedecms 调取当前栏目的链接和 栏目名称

    <a href="{dede:field name='typeurl' function=”GetTypeName(@me)”/}" target="_blank& ...

  8. (转)ubuntu/var/log/下各个日志文件

    本文简单介绍ubuntu/var/log/下各个日志文件,方便出现错误的时候查询相应的log   /var/log/alternatives.log-更新替代信息都记录在这个文件中 /var/log/ ...

  9. SSD配置

    SSD: Single Shot MultiBox Detector - 运行“ make -j32”时出错: nvcc warning : The 'compute_20', 'sm_20', an ...

  10. js ioc 实现

    var ar=[]; var o1={ id:'o1', o2:null } ar.push(o1); var o2={ id:'o2', o1:null } ar.push(o2) var ioc= ...