PHP异常处理

1 抛出一个异常

与Python的try except类似,PHP用try catch来捕获异常

基本语法

try{//可能出现错误或异常的代码//catch表示捕获,Exception是php已定义好的异常类
} catch(Exception $e){//对异常处理,方法://1、自己处理//2、不处理,将其再次抛出
}

处理程序

Try - 使用异常的函数应该位于 "try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。
Throw - 这里规定如何触发异常。注意:每一个 "throw" 必须对应至少一个 "catch",当然可以对应多个"catch"
Catch - "catch" 代码块会捕获异常,并创建一个包含异常信息的对象。

//创建可抛出一个异常的函数
function checkNum($number){if($number>1){throw new Exception("异常提示-数字必须小于等于1");}return true;}//在 "try" 代码块中触发异常try{checkNum(2);//如果异常被抛出,那么下面一行代码将不会被输出echo '如果能看到这个提示,说明你的数字小于等于1';}catch(Exception $e){//捕获异常echo '捕获异常: ' .$e->getMessage();}

异常处理类

PHP具有很多异常处理类,其中Exception是所有异常处理的基类。

Exception具有几个基本属性与方法,其中包括了:

message 异常消息内容
code 异常代码
file 抛出异常的文件名
line 抛出异常在该文件的行数

其中常用的方法有:

getTrace 获取异常追踪信息
getTraceAsString 获取异常追踪信息的字符串
getMessage 获取出错信息

//自定义的异常类,继承了PHP的异常基类Exception
class MyException extends Exception {function getInfo() {return '自定义错误信息';}
}try {//使用异常的函数应该位于 "try"  代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。throw new MyException('error');//这里规定如何触发异常。注意:每一个 "throw" 必须对应至少一个 "catch",当然可以对应多个"catch"
} catch(Exception $e) {//"catch" 代码块会捕获异常,并创建一个包含异常信息的对象echo $e->getInfo();//获取自定义的异常信息echo $e->getMessage();//获取继承自基类的getMessage信息
}

捕获异常信息

一般异常的处理流程是:

try {throw new Exception('wrong');
} catch(Exception $ex) {echo 'Error:'.$ex->getMessage().'<br>';echo $ex->getTraceAsString().'<br>';
}
echo '异常处理后,继续执行其他代码';

获取错误信息到日志中去

try {throw new Exception('wrong');
} catch(Exception $ex) {$msg = 'Error:'.$ex->getMessage()."\n";$msg.= $ex->getTraceAsString()."\n";$msg.= '异常行号:'.$ex->getLine()."\n";$msg.= '所在文件:'.$ex->getFile()."\n";//将异常信息记录到日志中PHP异常处理之   file_put_contents('error.log', $msg);
}

转载于:https://www.cnblogs.com/daibigmonster/p/8194366.html

半吊子菜鸟学Web开发 -- PHP学习 4 --异常相关推荐

  1. 菜鸟学WEB开发 ASP.NET 5.0 1.0

    菜鸟学WEB开发 ASP.NET 5.0 1.0 在学习之初我要强调一点"微软要向跨平台开发"大举进军了,不管他能走多远,这是微软的必经之路. 一.学习流程: 创建ASP.NET ...

  2. python web开发要学什么_Python WEB开发 用Python开展web开发必须学习什么?

    用Python开展web开发必须学习哪些? 针对新手想更轻轻松松的学好Python开发技术性,Python网络爬虫,Python数据分析,人工智能技术等技术性,这儿给大伙儿共享一套系统软件教育资源,加 ...

  3. 跟小甲鱼学Web开发笔记07

    跟小甲鱼学Web开发笔记07 格式化大作战 加粗效果 strong元素 b元素 斜体效果 em元素 i元素 使用css代替b和i元素 久的不去新的不来 del和ins元素 s元素 u元素 mark元素 ...

  4. java web开发需要学习哪些知识_java web开发需要学习哪些知识?

    现在世界已经进入一个以web为核心的阶段,掌握一门相关技术是非常有用的,那么java web开发需要学习哪些知识呢?下面小编就来给大家分享一下java web开发的知识. 1.面向对象分析设计思想 J ...

  5. python开发需要学什么_用Python进行web开发需要学习什么?

    匿名用户 1级 2017-08-24 回答 HTML(超文本标记语言)是网页的核心,学好HTML是成为Web开发人员的基本条件.HTML很容易学习的,但也很容易误用,要学精还得费点功夫. 随着HTML ...

  6. 菜鸟学python 哪吒_Python 学习之路 (前言)

    为什么要学Python 1,脚本语言本身很方便简洁,未来会有趋势 2,web 方向 3,运维方向 我是学静态语言出身的,java,毕业后从事android 应用开发,曾在工作期间学习过linux,想从 ...

  7. java web开发(学习路线)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] java语言天生就是为计算机网络开发而存在的.之前,学习java的时候,总觉得奇怪,为什么jav ...

  8. php和python web开发-Web开发应该学习php还是python

    看来Python的呼声很高啊. 若论排行榜,综合指数,以及看似大热,政治正确,非Pyhon莫属. 之前我曾有回答的帖子,建议初学者,没有编程经验者,可以从Python入手,选取一个方向,深入地研究.再 ...

  9. 哪里学php开发,哪里学web开发

    在开始学习Web开发时,我建议做的第一件事就是确定明确的最终目标,并牢记其中. 也许你想改变职业生涯.也许你对应用程序有一个邪恶的想法.或许你只是想学习乐趣. 无论您的目标是什么,了解您为什么这样做都 ...

最新文章

  1. 自动化测试前序(https://blog.csdn.net/ling_mochen/article/details/79314118)
  2. 【数字信号处理】相关函数应用 ( 正弦信号 的 自相关函数 分析 | 在白噪声中检测正弦信号 )
  3. C++中this指针的用法详解
  4. Rebuild Instance 操作详解 - 每天5分钟玩转 OpenStack(37)
  5. 电脑知识:磁盘分区相关知识笔记!
  6. Interlocked.CompareExchange
  7. 广工android嵌入式系统试卷_嵌入式系统考试试题A及答案
  8. fl2440hello world模块驱动编写
  9. 前端性能毫秒必争综合方案
  10. [论文总结] 深度学习在农业领域应用论文笔记2
  11. 小米5 android7.1 root,小米MIUI 7 ROOT工具(supersu root) V5.1 最新安卓版
  12. 向量叉乘的几何意义及其模的计算
  13. U3D Shader基础
  14. 轻松认识网络防火墙及应用
  15. 实现将html网页中的元素复制到微信编辑器中,并正常呈现排版
  16. java去掉html中的图片,java去掉html标签工具
  17. 续航超1000km,极氪成为宁德时代麒麟电池全球量产首发品牌 | 美通社头条
  18. uni-app封装自己常用的css样式-----自定义css的样式 (便于开发)-----原理简单
  19. 如何将喜马拉雅FM的音频下载下来保存
  20. java购物车设计_Java面向对象课程设计——购物车

热门文章

  1. linunx获取命令帮助
  2. oracle字符集与客户端
  3. Memcache的原理的详解
  4. elasticsearch 的filter cache (search 技术的冰山一角)
  5. CCIE实验之路由重分布之重分布的原则
  6. 闲谈嵌入式的复杂性2
  7. 数据库中日期大小的判断
  8. git创建本地版本仓库及注意事项
  9. Django的前世今生
  10. [译] Lenses:可组合函数式编程的 Getter 和 Setter(第十九部分)