gpt4 book ai didi

php - 将 if else 转换为 try catch

转载 作者:行者123 更新时间:2023-11-29 04:13:31 24 4
gpt4 key购买 nike

有人可以帮助我将以下使用 if-else 编写的代码转换为 try/catch。还要让我知道在这种情况下是否需要 trycatch 或 if-else 是否合适

$results = mysql_query($query);
if(mysql_num_rows($results)!=0)
{
while(($result = mysql_fetch_row($results))!=FALSE)
{
$res ="DELETE FROM table1 WHERE id ='".$result['id']."'";
if(mysql_query($res)==false)
{
echo mysql_error();
exit;
}
}
echo $res ="DELETE FROM table2 WHERE id ='".$id."'";
if(mysql_query($res)!==false)
{
header("Location:list.php?m=4");
}
else
{
echo mysql_error();
exit;
}
}
else
{
echo "Error";
}

最佳答案

try...catch 只有在您的函数抛出异常时才有意义。如果他们不这样做,就没有什么可以捕捉。我将从这个作为重构开始:

$results = mysql_query($query);
if (!mysql_num_rows($results)) {
echo 'No results!';
exit;
}

$ids = array();
while (($result = mysql_fetch_row($results)) !== false) {
$ids[] = $result['id'];
}

$ids = array_map('mysql_real_escape_string', $ids);
$query = "DELETE FROM table1 WHERE id IN ('" . join("','", $ids) . "')";
if (!mysql_query($query)) {
echo mysql_error();
exit;
}

$query = "DELETE FROM table2 WHERE id = '$id'";
if (!mysql_query($query)) {
echo mysql_error();
exit;
}

header("Location: list.php?m=4");
exit;

这仍然可以改进很多,但它已经比你的意大利面条逻辑有了改进。如果您对正确使用异常非常感兴趣,您应该首先继续正确使用函数来完成重复性任务(例如 error, exit 部分),然后可能将整个事情重组为类和对象,最后使用异常在现在嵌套的层之间进行通信。也许开始使用 PHP 框架来感受整个事情。

在上面的代码中加入异常只不过是一个goto,但只是为了说明目的:

try {

$results = mysql_query($query);
if (!mysql_num_rows($results)) {
throw new Exception('No results!');
}

$ids = array();
while (($result = mysql_fetch_row($results)) !== false) {
$ids[] = $result['id'];
}

$ids = array_map('mysql_real_escape_string', $ids);
$query = "DELETE FROM table1 WHERE id IN ('" . join("','", $ids) . "')";
if (!mysql_query($query)) {
throw new Exception(mysql_error());
}

$query = "DELETE FROM table2 WHERE id = '$id'";
if (!mysql_query($query)) {
throw new Exception(mysql_error());
}

header("Location: list.php?m=4");
exit;

} catch (Exception $e) {

echo 'ERROR: ' . $e->getMessage();
exit;

}

关于php - 将 if else 转换为 try catch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4274224/

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