gpt4 book ai didi

php - 异常 : When handling is the same, 一个 block 还是多个?

转载 作者:行者123 更新时间:2023-12-04 06:29:51 24 4
gpt4 key购买 nike

在错误处理相同的情况下(我回显错误并将 $_POST 数据传回表单),是否有任何理由将代码拆分为多个 try-catch 块?我有一个 get命令,如果传递了无效的 ID,则该命令可能会失败;我有 setter ,如果条目未验证则失败;我有一个 write ,如果无法写入数据库或某些后期验证失败,则会失败。假设在此页面上,所有异常都会导致向用户显示相同的通知(当然是在 $e->getMessage() 的帮助下)。那么与...一起去似乎更好吗?

// Try the whole block
try {
$var = $manager->get($id);
$var->setFoo('bar');
$var->setShazbot('fnord');
$manager->write($var);
}
catch (DataException $e) {
echo $e->getMessage();
}
catch (ValidationException $e) {
echo $e->getMessage();
}

或者...
// Try getting
try {
$var = $manager->get($id);
}
catch (DataException $e) {
echo $e->getMessage();
}

// Try setting
try {
$var->setFoo('bar');
$var->setShazbot('fnord');
}
catch (ValidationException $e) {
echo $e->getMessage();
}

// Try committing
try {
$manager->write($var);
}
catch (DataException $e) {
echo $e->getMessage();
}

现在,再次记住,在这个例子中,所有三个 catch 块都在做同样的事情。然而,获取、验证和编写是三件不同的事情,我认为尝试单独捕获它们而不是一次性捕获它们可能更明智。什么更有意义?

最佳答案

这是一个与风格无关的案例。这实际上是关于在抛出异常时您希望代码做什么。

块中的语句是否相互依赖才能正常工作?如果一个调用失败,它们是否是需要停止的逻辑分组?

如果是这样,则将它们全部包装在一个块中并在那里处理异常。

如果不是(意味着代码可以继续执行下一个小语句块,而不会成功执行先前的调用),则继续并分解它们。

关于php - 异常 : When handling is the same, 一个 block 还是多个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5553401/

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