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

 更新时间:2020年08月06日 15:56:36   作者:fwkjdaghappy1  
这篇文章主要介绍了php中try catch捕获异常实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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内置异常类的基本属性和方法。(不包括具体实现)

<?php
/**
* Exception.php
* 
* PHP5内置的异常类的属性与方法
* 以下这段代码只为说明内置异常处理类的结构,它并不是一段有实际意义的可用代码。
*/
 
class Exception{
	protected $message = 'Unknown exception'; // 异常信息
	protected $code = 0; // 用户自定义异常代码
	protected $file; // 发生异常的文件名
	protected $line; // 发生异常的代码行号
 
	function __construct($message = null, $code = 0);
	final function getMessage(); // 返回异常信息
	final function getCode(); // 返回异常代码(代号)
	final function getFile(); // 返回发生异常的文件名
	final function getLine(); // 返回发生异常的代码行号
	final function getTrace(); // backtrace() 数组
	final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息
 
	//可重载的方法
	function __toString(); // 可输出的字符串
}
?>

例子如下:

包含文件错误抛出异常

<?php
// 错误的演示
try {
require ('test_try_catch.php');
} catch (Exception $e) {
echo $e->getMessage();
}


// 正确的抛出异常
try {
if (file_exists('test_try_catch.php')) {
require ('test_try_catch.php');
} else {
throw new Exception('file is not exists');
}
} catch (Exception $e) {
echo $e->getMessage();
}

到此这篇关于php中try catch捕获异常实例详解的文章就介绍到这了,更多相关php中try catch捕获异常内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PHP 日常开发小技巧

    PHP 日常开发小技巧

    在php的开发过程中的一些小技巧,经常能遇到的一些。需要的朋友可以参考下。
    2009-09-09
  • php实现登陆模块功能示例

    php实现登陆模块功能示例

    这篇文章主要介绍了php实现登陆模块的方法,结合实例形式分析了php实现登陆功能的步骤与相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • PHP查找与搜索数组元素方法总结

    PHP查找与搜索数组元素方法总结

    这篇文章主要介绍了PHP查找与搜索数组元素方法,实例总结了php中in_array、array_key_exists、array_search、array_keys及array_values等函数操作数组的相关使用技巧,需要的朋友可以参考下
    2015-06-06
  • 理解PHP5中static和const关键字的区别

    理解PHP5中static和const关键字的区别

    理解PHP5中static和const关键字的区别...
    2007-03-03
  • 详解PHP设计模式之依赖注入模式

    详解PHP设计模式之依赖注入模式

    依赖注入模式:依赖注入是控制反转的一种实现方式。要实现控制反转,通常的解决方案是将创建被调用者实例的工作交由 IoC 容器来完成,然后在调用者中注入被调用者(通过构造器 / 方法注入实现),这样我们就实现了调用者与被调用者的解耦,该过程被称为依赖注入。
    2021-05-05
  • php中根据某年第几天计算出日期年月日的代码

    php中根据某年第几天计算出日期年月日的代码

    在PHP中,使用内置的date()函数很容易得到任意一天是当前年的第几天,格式为date('z'),为此,很多PHP程序会用一年中的第几天作为数据库的索引(index)。
    2011-02-02
  • PHP简单判断iPhone、iPad、Android及PC设备的方法

    PHP简单判断iPhone、iPad、Android及PC设备的方法

    这篇文章主要介绍了PHP简单判断iPhone、iPad、Android及PC设备的方法,可有效的判断出移动设备与PC端类型,需要的朋友可以参考下
    2016-10-10
  • php include加载文件两种方式效率比较

    php include加载文件两种方式效率比较

    这两天抽了点时间继续完善“X计划”的核心部分,核心嘛,就要加载必须的文件,尝试了两种方法,发现效率是不同的,分享一下吧~
    2010-08-08
  • 让你的PHP7更快之Hugepage用法分析

    让你的PHP7更快之Hugepage用法分析

    这篇文章主要介绍了让你的PHP7更快之Hugepage用法,较为详细的分析了php7中Hugepage的功能与具体的设置技巧,需要的朋友可以参考下
    2016-05-05
  • PHP中的traits实现代码复用使用实例

    PHP中的traits实现代码复用使用实例

    这篇文章主要介绍了PHP中的traits实现代码复用使用实例,本文讲解了Trait简单使用、优先级问题、多个Trait冲突问题、as可用来修改方法访问控制、Trait中使用Trait等内容,需要的朋友可以参考下
    2015-05-05

最新评论