PHP-带异常的开关情况

PHP-带异常的开关情况,php,switch-statement,Php,Switch Statement,我想知道,即使案例引发异常,我是否应该在开关中包含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; } 我到休息时间了吗?我不这样认为,为何我要把它包括在内

我想知道,即使案例引发异常,我是否应该在开关中包含
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;
}

我到休息时间了吗?我不这样认为,为何我要把它包括在内?它有意义吗?

如果
self::CBA
是一个字符串,则不会抛出异常,代码将达到中断状态。如果
case
是开关中的最后一种情况,则可能不需要中断,因为开关将以任何方式结束,但最好只添加
break
,而不是不添加它,这是一行代码,可以为您节省大量执行不打算执行的代码的麻烦。我深知这一点


通过将break添加到所有案例中,您可以在将来重新安排案例而不会出现任何问题,并且您还可以养成每次编写switch语句时都编写break的习惯(这是一个好习惯)。我希望它能回答您的问题。

那么,如果没有抛出异常(即,密钥是字符串),该怎么办?它只是用于验证数组。如果param是一个字符串,它将被抛出,稍后在我的方法中返回true。这是整个
switch
语句还是一个缩写示例。如果抛出异常,代码将不会到达断点,但如果key是字符串,则代码到达断点。这是多余的,除非
self::ABC/self::CBA:
是一个数值。如果它们是
foo
bar
那么
$key
显然是一个字符串。