异常处理 - php中Exception和Exception有什么区别?
程序员文章站
2022-05-06 23:45:05
...
在代码中需要捕获一个异常,使用
catch(Exception $e)
无效,但是改成catch(\Exception $e)
就可以。大概知道跟命名空间什么的有关,但是具体的不是很明白,求解答。另外,发现此文件中其他用到异常的地方都是用的(Exception $e)
而非(\Exception $e)
回复内容:
在代码中需要捕获一个异常,使用catch(Exception $e)
无效,但是改成catch(\Exception $e)
就可以。大概知道跟命名空间什么的有关,但是具体的不是很明白,求解答。另外,发现此文件中其他用到异常的地方都是用的(Exception $e)
而非(\Exception $e)
如果你的PHP文件定义了命名空间,那么该命名空间下面的class 用法必须加\
表示根空间,也就是php自己的class,不是你PHP文件里面的class
无法捕捉的原因可能使因为抛出的异常不匹配,检查其他异常抛出的异常类是不是经过一层继承关系的。。
情迷说得对。
如果你的PHP文件定义了命名空间,catch(Exception $e)
则会寻找该命名空间下面的Exception 类,如果未定义就会出现找不到类的问题。
catch(\Exception $e)
表示根空间,这个类是始终存在。
推荐看一下 modern php
这本书。
Exception表示根命名空间,说白了就是php官方的异常累类,不加的话可能是你当前定义的命名空间下的类
推荐阅读
-
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
-
浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别
-
PHP异常处理Exception类
-
PHP的异常处理类Exception的使用及说明
-
Python中的异常(Exception)处理
-
PHP 异常处理 throw new exception
-
PHP 异常处理 throw new exception
-
java中的Exception和Error有什么区别?
-
2019-07-24 PHP中mysql_fetch_assoc 和 mysql_fetch_array 有什么区别?
-
php中对内置函数json_encode和json_decode的异常处理