PHP学习5——异常处理
主要内容:
- PHP错误类型
- 异常的产生
- 错误日志
- 日志信息记录到操作系统日志
- 异常处理
- 扩展异常处理类
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——异常处理的更多相关文章
- 4月18日 python学习总结 异常处理、网络编程
一. 异常 1.什么是异常 异常是错误发生的信号,程序一旦出错,如果程序中还没有相应的处理机制 那么该错误就会产生一个异常抛出来,程序的运行也随之终止 2.一个异常分为三部分: 1.异常的追踪信息 2 ...
- velocity模板引擎学习(3)-异常处理
按上回继续,前面写过一篇Spring MVC下的异常处理.及Spring MVC下的ajax异常处理,今天看下换成velocity模板引擎后,如何处理异常页面: 一.404错误.500错误 <e ...
- Java编程思想学习(九) 异常处理
java的异常处理机制可以使程序有极好的容错性,让程序更加的健壮.所谓的异常,就是指的阻止当前方法或作用域继续执行的问题,,当程序运行时出现异常时,系统就会自动生成一个Exception对象来通知程序 ...
- Python学习之--异常处理
Python中的Exceptions是所有异常的基类,内置的异常类都放在了exceptions模块中,通过dir()函数可以看到这些内置的类 通过raise 语句触发异常,如 >>> ...
- Java学习之异常处理
在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出),Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性. Throwabl ...
- Python 2.7 学习笔记 异常处理
如同别的开发语言,python也支持异常处理机制.本文介绍下它的基本语法. 一.异常的基本处理框架如下: try: 业务代码 except 异常类1: 异常处理代码 except 异常类2: 异常处理 ...
- OC学习8——异常处理
1.和Java一样,OC也有自己的一套异常处理机制,不同的是,OC中的异常处理机制并不是作为常规的编程实践,通常只是作为一种程序调试.排错机制. 2.与Java中类似,OC中也是采用@try...@c ...
- 零基础学习python_异常处理(32-33课)
我们写完python执行的时候是不是经常会遇到报错,而且报错都是大片红字,这样给别人的感受就是你写的程序怎么老是出问题啊,这样我们还咋么混下去呢?于是乎,就有了异常处理的东东. python的try语 ...
- java基础学习总结——异常处理
一.异常的概念 异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误.出现错误时观察错误的名字和行号最为重要.
- [Java学习] Java异常处理基础
Java异常是一个描述在代码段中发生的异常(也就是出错)情况的对象.当异常情况发生,一个代表该异常的对象被创建并且在导致该错误的方法中被抛出(throw).该方法可以选择自己处理异常或传递该异常.两种 ...
随机推荐
- C#字典 Dictionary<Tkey,Tvalue> 之线程安全问题 ConcurrentDictionary<Tkey,Tvalue> 多线程字典
ConcurrentDictionary<Tkey,Tvalue> Model #region 程序集 mscorlib, Version=4.0.0.0, Culture=neutra ...
- 一、SecureCRT 8.0 客户端连接服务器
1.通过远程连接服务器linux,连接的是ssh服务: 如图:ssh2协议是ssh的升级版. 连接模式: 2. Ctrl+d 快速退出==exit/quit/logout 3.SecureCRT 改变 ...
- 原生态js回顶部
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SPOJ 3267 DQUERY(离线+树状数组)
传送门 话说这好像HH的项链啊…… 然后就说一说上次看到的一位大佬很厉害的办法吧 对于所有$r$相等的询问,需要统计有多少个不同的数,那么对于同一个数字,我们只需要关心它最右边的那一个 比如$1,2, ...
- redis删除指定前缀的缓存
redis作为缓存服务器为MySQL数据库提供较高的防御性,对于一些数据的查询可以直接从缓存中可以进行查询. 但是,某些情况下,我们需要清除缓存. 以下场景: 公司经常做活动,每个活动都存在大量的数据 ...
- CSS3过渡效果 兼容IE6、IE7、IE8
<style> .box{ width:120px;height:40px;background:yellowgreen;line-height:40px;transition:width ...
- jmeter压力测试值之配置JDBC Connection Configuration(一)
一.下载mysql jar包 下载mysql jar包 http://dev.mysql.com/downloads/connector/j/ 网盘下载地址:mysql-connector-java- ...
- python+requests接口自动化测试框架实例详解
python+requests接口自动化测试框架实例详解 转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...
- string.Format("rspauth={0}",
public string rspauth(string Username, string Realm, string Password, string Nonce, string Cnonce, ...
- 2016级算法第五次上机-B.Bamboo&APTX4844魔发药水
Bamboo&APTX4844魔发药水 题意 "于是,Bamboo耐着性子,看巫师从袖子里掏出 M 瓶时光泉水和 K 粒绿色能量.每瓶时光泉水重量为 c ,生发效果为 l:每粒绿色能 ...