主要内容:

  1. PHP错误类型
  2. 异常的产生
  3. 错误日志
  4. 日志信息记录到操作系统日志
  5. 异常处理
  6. 扩展异常处理类

PHP错误类型

  • 语法错误
  • 执行时错误
  • 逻辑错误

异常的产生

如果安装了xampp之后,在php.ini中可以设置错误报告,配置文件路径:C:\xampp\php

可以使用error_reporting(0)关闭错误提示,使用error_reporting(E_ALL)报告所有错误

在ini文件中使用;分号注释

错误日志

使用指定文件记录错误报告日志

在开发的产品投入使用后,通常会把所有的错误提示都关闭,因为这些提示会影响消费者对产品的体验,而且曝露太多信息容易被黑客攻击。

错误信息可以保存到单独的文本(日志文件)中而不要显示在浏览器中。

默认情况都是配置好的,在程序中可以使用error_log($msg)来自定义错误信息

error.php

<?php
echo "ssdsds";
error_log("这是一段自定义的报错日志信息");
?>

  

打开文件

[06-Aug-2018 07:24:24 Europe/Berlin] 这是一段自定义的报错日志信息
[06-Aug-2018 07:24:50 Europe/Berlin] 这是一段自定义的报错日志信息

  

打开php.ini配置文件

报告PHP所有错误

设置PHP报错日志地址:

日志信息记录到操作系统日志

常用方法

  • openlog($msg,$option,$facility)打开日志连接,比如openlog("php",LOG_PID,LOG_USER)
  • syslog($priority,$msg)生成日志消息,比如syslog(LOG_WARNING,"向syslog中发送自定义信息。。。")
  • closelog()关闭日志连接

syslog.php

<?php
openlog("PHP5",LOG_PID,LOG_USER);
syslog(LOG_WARNING,"向syslog发送自定义信息");
closelog();
?>

自定的信息都被记录都爱系统日志中了,可以在计算机》管理》事件查看器》windows日志》应用程序》点击警告,即生成的信息。

异常处理

异常处理是一种可扩展、易维护的错误处理统一机制。

异常处理的实现

exception.php

<?php
try{
$error="这是异常的提示信息";
throw new Exception($error);
echo "这里不会被执行";
}catch(Exception $e){
echo "错误信息:".$e->getMessage()."<br/>";;
}
echo "程序继续向下执行";
?>

  输出

错误信息:这是异常的提示信息
程序继续向下执行

异常必须手动抛出,关键字是throw,比如 ,throw new Exception();,注意,在异常被处理后,程序会继续向下执行。

扩展异常处理类

Exception类是所有异常的基类,可以通过继承来扩展它。

Exception.php

<?php
//异常类
class Exception{
protected $message='Unknow exception';
protected $code=0;
protected $file;
protected $line;
//构造方法
public function __construct($message=null,$code=0,$previous=null){};
public function __toString();//可重载,用于返回可输出的字符串
final public function getMessage();//返回异常信息
final public function getCode();//返回异常代码
final public function getFile();//返回发生异常的文件名
final public function getLine();//返回发生异常的代码行号
final public function getTrace();//数组形式返回异常传递的线路
final public function getPrevious();//返回格式化异常
final public function getTraceAsString();//返回格式化字符串的getTrace信息
}
?>

  现在我们定义自己的异常类

myException.php

<?php
//异常类
class cakeException extends Exception{
public function __toString(){
return "这个蛋糕过期了<br/>";
}
}
//异常类
class pearException extends Exception{
public function __toString(){
return "这个梨子烂了<br/>";
}
}
//异常类
class appleException extends Exception{
public function __toString(){
return "这个苹果坏了<br/>";
}
} try{
throw new cakeException();
}catch(Exception $e){
echo $e;
}
try{
throw new appleException();
}catch(Exception $e){
echo $e;
}
try{
throw new pearException();
}catch(Exception $e){
echo $e;
} ?>

  输出

这个蛋糕过期了
这个苹果坏了
这个梨子烂了

  上面都是直接抛出异常,在应用中,我们通过判断来抛出异常

demo.php

<?php

	try{
$a=10;
if(isset($b)){
echo "程序正常执行";
}else{
throw new Exception();
}
}catch(Exception $e){
echo "错误代码所在路径:".$e->getFile()."<br/>";
echo "错误代码所在行号:".$e->getLine()."<br/>";
}
echo "<br/>程序执行完毕<br/>"; ?>

  输出

错误代码所在路径:C:\xampp\htdocs\demo.php
错误代码所在行号:8 程序执行完毕

  

ok,关于异常处理就到这里了。

PHP学习5——异常处理的更多相关文章

  1. 4月18日 python学习总结 异常处理、网络编程

    一. 异常 1.什么是异常 异常是错误发生的信号,程序一旦出错,如果程序中还没有相应的处理机制 那么该错误就会产生一个异常抛出来,程序的运行也随之终止 2.一个异常分为三部分: 1.异常的追踪信息 2 ...

  2. velocity模板引擎学习(3)-异常处理

    按上回继续,前面写过一篇Spring MVC下的异常处理.及Spring MVC下的ajax异常处理,今天看下换成velocity模板引擎后,如何处理异常页面: 一.404错误.500错误 <e ...

  3. Java编程思想学习(九) 异常处理

    java的异常处理机制可以使程序有极好的容错性,让程序更加的健壮.所谓的异常,就是指的阻止当前方法或作用域继续执行的问题,,当程序运行时出现异常时,系统就会自动生成一个Exception对象来通知程序 ...

  4. Python学习之--异常处理

    Python中的Exceptions是所有异常的基类,内置的异常类都放在了exceptions模块中,通过dir()函数可以看到这些内置的类 通过raise 语句触发异常,如 >>> ...

  5. Java学习之异常处理

    在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出),Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性.       Throwabl ...

  6. Python 2.7 学习笔记 异常处理

    如同别的开发语言,python也支持异常处理机制.本文介绍下它的基本语法. 一.异常的基本处理框架如下: try: 业务代码 except 异常类1: 异常处理代码 except 异常类2: 异常处理 ...

  7. OC学习8——异常处理

    1.和Java一样,OC也有自己的一套异常处理机制,不同的是,OC中的异常处理机制并不是作为常规的编程实践,通常只是作为一种程序调试.排错机制. 2.与Java中类似,OC中也是采用@try...@c ...

  8. 零基础学习python_异常处理(32-33课)

    我们写完python执行的时候是不是经常会遇到报错,而且报错都是大片红字,这样给别人的感受就是你写的程序怎么老是出问题啊,这样我们还咋么混下去呢?于是乎,就有了异常处理的东东. python的try语 ...

  9. java基础学习总结——异常处理

    一.异常的概念 异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误.出现错误时观察错误的名字和行号最为重要.

  10. [Java学习] Java异常处理基础

    Java异常是一个描述在代码段中发生的异常(也就是出错)情况的对象.当异常情况发生,一个代表该异常的对象被创建并且在导致该错误的方法中被抛出(throw).该方法可以选择自己处理异常或传递该异常.两种 ...

随机推荐

  1. 这些混账的开源库在煞笔Windows系统上的编译方法

    母语不就是用来吐槽的么!!!!!说母语我不骂人难道还用英语么!!!!!!!!!! 说什么什么开源库好的狗日的,尼玛有种先搞定编译啊卧槽!!!!!!!!! 是的!!!!!你可以吐槽老子智商低用弱智煞笔W ...

  2. 苹果软件App上架问题

    0.官方网站 开发者中心 itunes connect 优酷 哔哩哔哩 腾讯视频 1.上架流程 1.1 开发者账号申请 2017年苹果企业开发者账请完号申整指南 iOS开发之苹果开发者账号注册申请流程 ...

  3. 9、select 语句

    基础语句 select * from tb1; select * from tb1 limit 3; select name,age from tb1; select name,age from tb ...

  4. “全栈2019”Java第二十九章:数组详解(中篇)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. 牛客挑战赛30D 小A的昆特牌(组合数学)

    题面 传送门 题解 很容易写出一个暴力 \[\sum_{i=l}^r {i+n-1\choose n-1}{s-i+m\choose m}\] 即枚举选了多少个步兵,然后用插板法算出方案数 我们对这个 ...

  6. Connection Timeout和Command Timeout

    每次对数据库连接时,我们有时候会碰到连接超时或者命令超时,这两个超时是不一样的.以ADO.NET为例,当客户端和服务器端连接时,碰到的超时情况主要有下面几种: 当从连接池获取一个连接时,碰到超时. 当 ...

  7. 小记 Linux 之 Vim

    小记 Linux 之 Vim 使用vim用来进行文本流查询,是非常重要的部分. 技巧一:使用 '#' 系统将列出文档相同字符,在代码时很重要. 技巧二:使用 ']I' 具体操作是先使用 ? 或 \ 进 ...

  8. Python 中的 10 个常见安全漏洞,以及如何避免(下)

    简评:编写安全代码很困难,当你学习一个编程语言.模块或框架时,你会学习其使用方法. 在考虑安全性时,你需要考虑如何避免被滥用,Python 也不例外,即使在标准库中,也存在用于编写应用的不良实践.然而 ...

  9. P3866 [TJOI2009]战争游戏 最小割

    $ \color{#0066ff}{ 题目描述 }$ 小R正在玩一个战争游戏.游戏地图是一个M行N列的矩阵,每个格子可能是障碍物,也可能是空地,在游戏开始时有若干支敌军分散在不同的空地格子中.每支敌军 ...

  10. 条目二十四《当效率至关重要时,请在map::operator[]与map::insert之间谨慎做出选择》

    条目二十四<当效率至关重要时,请在map::operator[]与map::insert之间谨慎做出选择> 当效率至关重要时,应该在map::operator[]和map::insert之 ...