IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

PHP的异常原理与实例说明 Fatal error: Uncaught exception

Everyday NetLog 2013-02-27 23:15:37 累计浏览 9,761 次
本机暂存

PHP的异常原理
PHP5+ 开始提供了一种新的面向对象的错误处理方法,用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。

一般使用方法:

  1. <?php  

  2. function zhoz_com_test() {  

  3.    throw new Exception("异常啦");  

  4. }  

  5. try {  

  6.     zhoz_com_test();  

  7. } catch (Exception $e) {  

  8. echo $e->getMessage();  

  9. }  


throw new Exception('XXX') : 抛出一个异常
try  : 使用异常的函数应该位于 "try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。
Catch:代码块会捕获异常,并创建一个包含异常信息的对象
自定义异常类:
  1. class myException extends Exception {  

  2. public function errorMessage() {  

  3.    $errorMsg = 'zhoz.com Error on line '.$this->getLine().' in '.$this->getFile()  

  4.  .': <b>'.$this->getMessage().'</b> is not a valid E-Mail address';  

  5.    return $errorMsg;  

  6.  }  

  7. }  

  8. try {  

  9.  throw new myException($email);  

  10. }catch (myException $e){  

  11. echo $e->errorMessage();  

  12. }  


myException类是一个自定义的异常类,必须继承Exception
Exception是一个PHP自带的内置的异常类,默认情况下会使用PHP默认的内置异常类,但是我们可以通过自定义的方式,自定义成满足自己需求的异常类。
使用自定义异常类的时候,throw new myException 抛出异常也需要抛出自定义的异常类类名
catch的时候也需要捕获自定义的异常类
如果抛出了异常而不捕获处理的话,就会发生PHP代码报错,如下:
[sql]
Fatal error: Uncaught exception 'myException' in D:AppServwwwcctv runkindex.php:12 Stack trace: #0 {main}  
thrown in D:AppServwwwcctv runkindex.php on line 12

PHP默认异常类详细:
  1. class exception  

  2. {  

  3.    protected $message = 'Unknow exception'; //自定义的异常信息  

  4.    protected $code = 0; //定义的异常代码  

  5.    protected $file; //发生异常的PHP程序名  

  6.    protected $line; //发生异常的PHP行号  

  7.    //用于传递用户自定义异常信息和用户自定义异常代码的构造函数  

  8.    function __construct($message=null,$code=0);  

  9.    final function getMessage();  

  10.    final function getCode();  

  11.    final function getFile();  

  12.    final function getLine();  

  13.    final function getTrace(); //以数组形式返回异常传递的路线  

  14.    final function getTraceAsString(); //返回格式化成字符串的getTrace函数信息  

  15.    function __toString(); //可重载,用于返回可输出的字符串  

  16. }  


可以看到PHP默认异常类中有很多自定义变量和方法
$e->getMessage 一般是获取错误信息
$e->getCode() 一般是获取错误码
$e->getFile() 获取错误的文件信息
$e->getLine() 获取错误行数
$e->getTrace() 异常经过的文件路径
__toString() 一般可以重载,用于返回可输出的字符串
PHP异常类的作用:
捕获异常,一般可以在MYSQL链接不上,或者业务逻辑错误的时候,抛出异常,在代码最顶端接收。
异常分析处理。可以在出异常的时候,捕获到异常的错误信息,写入日志。
可以返回友好化的提示信息,例如WEB端可以返回页面形式,也可以在AJAX端返回JSON数据格式。
原则:如果异常抛出了,就必须捕获它,否则会PHP报错。

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 使用gettext来支持PHP的多语言 (累计阅读 39,267)
  2. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,162)
  3. Paypal接口详细代码(PHP版,非API接口) (累计阅读 19,407)
  4. 我的PHP,Python和Ruby之路 (累计阅读 13,145)
  5. include(“./file.php”)和include(“file.php”)区别 (累计阅读 12,787)
  6. 15个最好的免费开源电子商务平台 (累计阅读 12,538)
  7. Redis消息队列的若干实现方式 (累计阅读 12,081)
  8. 到底什么是MVC? (累计阅读 11,861)
  9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,708)
  10. Rolling cURL: PHP并发最佳实践 (累计阅读 11,485)