首页 > 后端开发 > php教程 > php中的异常处理机制

php中的异常处理机制

WBOY
发布: 2016-06-06 20:42:32
原创
1159 人浏览过

在java编程语言中,有一套比较完善的异常处理机制,而且内部已经封装的比较好了。php中的异常处理机制却没有那么强大和完善,那它是如何实现的呢,是把每个异常当成错误来处理的吗?

回复内容:

在java编程语言中,有一套比较完善的异常处理机制,而且内部已经封装的比较好了。php中的异常处理机制却没有那么强大和完善,那它是如何实现的呢,是把每个异常当成错误来处理的吗?

PHP 内置了一个基类 Exception,你需要继承这个类来定义自己的异常。
当异常被触发时通过 catch 关键字来捕获,进行异常处理。

<code>catch (MyException $e) {
     //MyException process here...
}
</code>
登录后复制

抛出异常可以这样做:

<code>$myException = new MyException(/*something here*/);
throw $myException;
</code>
登录后复制

关于前段时间,自己提到的一个php中的异常处理机制问题,由于回答者甚少,笔者只好自己广搜网络资源以及大拿的文章(尤其参考PHP核心技术与最佳实践一书),现整理如下,如有错误,欢迎指出:

在各种语言中,异常和错误的概念其实是不一样的,在PHP中,任何自身错误都会触发一个错误,而不是抛出异常(对于一些情况,会同时抛出异常和错误!)。在这个意义上,如果像使用异常一样去处理一些不可预知的情况,是办不到的。比如,想在数据库连接打不开时触发异常,是不可行的,这在PHP中把他作为错误抛出,而不会作为异常自动捕获。

经典除零问题:

<code>try {
$a = 5 / 0;
echo $a;
} catch (Exception $e) {
echo $e->getMessage();
$a = 123;
}
echo $a;
</code>
登录后复制

输出结果是:
php中的异常处理机制

PHP只有你手动throw抛出异常后,才能捕获异常(一般是这样,但也有php异常可以自动捕获)。

而对于java,它有比较完善的异常处理机制,把一切认为不正常的情况都当作了异常,而PHP却把他们当成了错误,根本原因在于,java里异常是唯一的错误报告方式,而在php中却不是这样。通俗一点就是,这两门语言的设计者对于异常和错误的界定存在分歧,什么是异常,什么是错误,他们的设计者存在不同的观点而已。

说道异常,就不得不提php中异常的兄弟-----错误。php中错误的处理比异常的价值大得多,而且php提供了比较强大的错误处理函数,详细请自己查阅手则或者网络资源。

相关标签:
php
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板