在 PHP 中,当在 try 块中使用 throw new Exception 时,会立即停止 try 块中后续代码的执行,并直接跳转到匹配的 catch 块(如果存在)。以下是详细解释:
关键行为:
- 中断执行:
throw语句会立即终止当前try块的执行流程,其后的代码不会运行。 - 跳转到
catch:程序会查找与抛出异常类型匹配的catch块来处理异常。 - 未捕获的异常:如果没有匹配的
catch块,异常会向上传递(可能触发全局异常处理或导致致命错误)。
示例代码:
try {
echo "Step 1: Start<br>"; // 会执行
throw new Exception("Error occurred!"); // 抛出异常,后续代码终止
echo "Step 2: This will NEVER run<br>"; // 不会执行!
} catch (Exception $e) {
echo "Caught Exception: " . $e->getMessage() . "<br>"; // 处理异常
}
echo "Step 3: Outside try-catch<br>"; // 继续执行输出:
Step 1: Start
Caught Exception: Error occurred!
Step 3: Outside try-catch关键点:
- ✅
throw后的代码(如Step 2)不会执行。 - ✅ 程序直接进入
catch块处理异常。 - ✅
catch块结束后,会继续执行try-catch结构之后的代码(如Step 3)。
总结:
| 代码位置 | 是否执行 |
|---|---|
throw 之前的代码 | 是 ✅ |
throw 之后的代码 | 否 ❌(立即中断) |
catch 块中的代码 | 是 ✅ |
try-catch 之后的代码 | 是 ✅ |
始终记住:throw 是“紧急出口”,一旦触发,try 块内剩余代码会被跳过。

