【问题标题】:PHP - Switch Case with ExceptionsPHP - 有异常的切换案例
【发布时间】:2018-08-17 16:07:28
【问题描述】:

我想知道是否应该在我的 switch 中包含break,即使案例抛出异常。

switch ($key) {
    case self::ABC:
    case self::CBA:
        if (!is_string($key)) {
            throw new Exception('Well.. this should be a string my friend');
        }
        break;
}

我什至可以休息吗?我不这么认为,那我为什么要包括它呢?有意义吗?

【问题讨论】:

  • 那么如果没有抛出异常怎么办,即。键是字符串?
  • 仅用于验证数组。如果参数是一个字符串,它只会被抛出,稍后在我的方法中返回 true。
  • 是整个switch 声明还是只是一个缩写示例。
  • 如果抛出异常,你的代码不会到达break,但是如果key是字符串,那么代码会到达break。
  • 这是多余的,除非self::ABC/self::CBA: 是一个数字值。如果这些是foobar 那么$key 显然是一个字符串。

标签: php switch-statement


【解决方案1】:

如果self::CBA 是一个字符串,则不会抛出异常,您的代码将会中断。如果 case 是你的 switch 中的最后一个 case,那么可能不需要 break,因为 switch 无论如何都会结束,但最好只添加 break 而不是不添加它,这是可以节省的一行代码执行不应该执行的代码会给您带来很多麻烦。我知道这很难。

通过给所有的case加上break,你可以在以后重新排列case而不会有任何问题,而且你也会养成每次写switch语句都写break的习惯(这是一个好习惯)。我希望它能回答你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    相关资源
    最近更新 更多