• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

异常处理 – php try catch 中的catch(Exception $e) 中的Exception 有什么作用?

php 搞代码 3年前 (2022-01-22) 25次浏览 已收录 0个评论
文章目录[隐藏]

如题. Exception 是起作用域的作用吗?还是语言结构?

回复内容:

首先很明确的是 try … catch … 是一个语言结构。
那既然如此就不能用函数参数类型限定的方式去理解 catch 后面的括号里的 Exception 了。

如果这里没有 Exception,比如这样写:

<?phptry {} catch ($e) {}

你会得到一个错误:

Parse error: parse error, expecting "identifier (T_STR<strong>2本文来源gaodaima#com搞(代@码$网6</strong><pre>搞gaodaima代码

ING)"' or "namespace (T_NAMESPACE)"' or `"\\ (T_NS_SEPARATOR)"' in …

显而易见,这里的 Exception 是一种『预期』,用于判断捕获到的异常类型的。

如果用类的情景来翻译一下,大概就类似于:

<?php$e = new Exception;if ($e instanceof Exception) {    # do something ...}

如果你是多个 catch,比如:

<?phptry {    throw new CustomException("Error Processing Request", 1);} catch (CustomException $e) {    echo 1;} catch (Exception $e) {    echo 2;}class CustomException extends Exception{}

虽然我们抛出的异常也属于 Exception,但是 catch 捕捉到第一个就停止了,所以这里只会输出 1,如果互换 catch (CustomException $e)catch (Exception $e) 也一样。

这也和以下情况相同:

<?php$e = new CustomException;if ($e instanceof CustomException) {    echo 1;} elseif ($e instanceof Exception) {    echo 2;}class CustomException extends Exception{}

可以看下java,Exception是个类名,catch的$e是类的实例
你也可以自己写个类来继承Exception,然后再catch中抓住

类型吧。你也可以写自己的Exception类

以上就是异常处理 – php try catch 中的catch(Exception $e) 中的Exception 有什么作用?的内容,更多相关内容请关注搞代码(www.gaodaima.com)!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:异常处理 – php try catch 中的catch(Exception $e) 中的Exception 有什么作用?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址