gpt4 book ai didi

php - 如何在 PHP 中有效地使用 try...catch block

转载 作者:IT老高 更新时间:2023-10-28 11:55:50 26 4
gpt4 key购买 nike

我一直在我的 PHP 代码中使用 try..catch block ,但我不确定我是否正确使用了它们。

例如,我的一些代码如下所示:

 try {
$tableAresults = $dbHandler->doSomethingWithTableA();
$tableBresults = $dbHandler->doSomethingElseWithTableB();
} catch (Exception $e) {
return $e;
}

所以我将多个数据库操作分组在同一个 try/catch block 中,因为如果任何事务中发生任何异常,我将能够处理它。

我这样做是因为我认为它比:

 try {
$tableAresults = $dbHandler->doSomethingWithTableA();
} catch (Exception $e) {
return $e;
}
try {
$tableBresults = $dbHandler->doSomethingWithTableB();
} catch (Exception $e) {
return $e;
}

虽然,我不确定我正在做的是一种好的做法,还是只是一种捕捉异常的懒惰方式。

我的假设是,只有当异常需要特殊处理时,它才应该有自己的 try/catch block ,否则将它们分组在同一个 try/catch 中应该没问题。

所以我的问题是:

对每个数据库事务使用 try/catch block 有什么好处吗?还是我仍然可以将多个数据库事务分组在同一个 try/catch block 中而完全没有问题?

可以嵌套 try/catch block 吗?谢谢!

编辑

return 语句主要仅用于演示目的,但我也在 catch() 中使用返回,因为我正在向该方法发出 AJAX 请求,而 Javascript 需要一个 JSON 对象,然后如果发生异常,我将返回一个空的 JSON 编码数组。我只是认为在我的示例中放置特定代码不会增加任何值(value)。

最佳答案

重要提示

下面的讨论假设我们讨论的代码结构如上例所示:无论选择哪个替代方案,异常都会导致该方法在逻辑上停止执行它在中间的任何操作。


只要你打算做同样的事情,无论 try block 中的哪个语句抛出异常,那么使用单个 try/捕获。例如:

function createCar()
{
try {
install_engine();
install_brakes();
} catch (Exception $e) {
die("I could not create a car");
}
}

多个 try/catch block 很有用,如果您可以并且打算以特定于故障原因的方式处理故障。

function makeCocktail()
{
try {
pour_ingredients();
stir();
} catch (Exception $e) {
die("I could not make you a cocktail");
}

try {
put_decorative_umbrella();
} catch (Exception $e) {
echo "We 're out of umbrellas, but the drink itself is fine"
}
}

关于php - 如何在 PHP 中有效地使用 try...catch block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17549584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com