当前位置:首页 > PHP教程 > php高级应用 > 列表

php中try catch捕获异常实例详解

发布:smiling 来源: PHP粉丝网  添加日期:2022-03-21 11:38:00 浏览: 评论:0 

PHP 5 添加了类似于其它语言的异常处理模块。在 PHP 代码中所产生的异常可被 throw语句抛出并被 catch 语句捕获。(注:一定要先抛才能获取)

需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常。

每一个 try 至少要有一个与之对应的 catch。

使用多个 catch可以捕获不同的类所产生的异常。

当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。

当然,PHP允许在 catch 代码块内再次抛出(throw)异常。

当一个异常被抛出时,其后(译者注:指抛出异常时所在的代码块)的代码将不会继续执行,而 PHP 就会尝试查找第一个能与之匹配的 catch。

如果一个异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么 PHP 将会产生一个严重的错误,并且输出 Uncaught Exception ... (未捕获异常)的提示信息。

先来看一下PHP内置异常类的基本属性和方法。(不包括具体实现)

  1. <?php 
  2. /** 
  3. * Exception.php 
  4.  
  5. * PHP5内置的异常类的属性与方法 
  6. * 以下这段代码只为说明内置异常处理类的结构,它并不是一段有实际意义的可用代码。 
  7. */ 
  8.    
  9. class Exception{ 
  10.     protected $message = 'Unknown exception'// 异常信息 
  11.     protected $code = 0; // 用户自定义异常代码 
  12.     protected $file// 发生异常的文件名 
  13.     protected $line// 发生异常的代码行号 
  14.    
  15.     function __construct($message = null, $code = 0); 
  16.     final function getMessage(); // 返回异常信息 
  17.     final function getCode(); // 返回异常代码(代号) 
  18.     final function getFile(); // 返回发生异常的文件名 
  19.     final function getLine(); // 返回发生异常的代码行号 
  20.     final function getTrace(); // backtrace() 数组 
  21.     final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息 
  22.    
  23.     //可重载的方法 
  24.     function __toString(); // 可输出的字符串 
  25. ?> 

例子如下:

包含文件错误抛出异常

  1. <?php 
  2. // 错误的演示 
  3. try { 
  4. require ('test_try_catch.php'); 
  5. } catch (Exception $e) { 
  6. echo $e->getMessage(); 
  7.  
  8.  
  9. // 正确的抛出异常 
  10. try { 
  11. if (file_exists('test_try_catch.php')) { 
  12. require ('test_try_catch.php'); 
  13. else { 
  14. throw new Exception('file is not exists'); 
  15. } catch (Exception $e) { 
  16. echo $e->getMessage(); 
  17. }

Tags: try catch php捕获异常

分享到: