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

php大神进阶之try catch

发布:smiling 来源: PHP粉丝网  添加日期:2022-07-13 11:40:38 浏览: 评论: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. /** 
  4.  
  5. * Exception.php 
  6.  
  7.  
  8.  
  9. * PHP5内置的异常类的属性与方法 
  10.  
  11. * 以下这段代码只为说明内置异常处理类的结构,它并不是一段有实际意义的可用代码。 
  12.  
  13. */ 
  14.  
  15.  
  16.  
  17. class Exception{ 
  18.  
  19.     protected $message = 'Unknown exception'// 异常信息 
  20.  
  21.     protected $code = 0; // 用户自定义异常代码 
  22.  
  23.     protected $file// 发生异常的文件名 
  24.  
  25.     protected $line// 发生异常的代码行号 
  26.  
  27.  
  28.  
  29.     function __construct($message = null, $code = 0); 
  30.  
  31.     final function getMessage(); // 返回异常信息 
  32.  
  33.     final function getCode(); // 返回异常代码(代号) 
  34.  
  35.     final function getFile(); // 返回发生异常的文件名 
  36.  
  37.     final function getLine(); // 返回发生异常的代码行号 
  38.  
  39.     final function getTrace(); // backtrace() 数组 
  40.  
  41.     final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息 
  42.  
  43.  
  44.  
  45.     //可重载的方法 
  46.  
  47.     function __toString(); // 可输出的字符串 
  48.  
  49.  
  50. ?> 

例子如下:

包含文件错误抛出异常

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

Tags: try catch

分享到: