try...catch
n'a de sens que si vos fonctions lançaient des exceptions. Si ce n'est pas le cas, il n'y a rien à catch
. Je commencerai par cela comme un refactoring:
$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;
Cela peut encore améliorer beaucoup, mais il est déjà une amélioration par rapport à votre logique de spaghetti. Si vous êtes sérieusement intéressé par l'utilisation correcte des exceptions, vous devez d'abord utiliser correctement les fonctions pour les tâches répétitives (comme les error, exit
parties), puis éventuellement restructurer le tout en classes et objets, et enfin utiliser des exceptions pour communiquer entre maintenant couches imbriquées. Peut-être commencer à utiliser un framework PHP pour avoir une idée de tout ça.
Mettre des exceptions dans le code ci-dessus ne serait guère plus qu'un goto
, mais seulement pour des fins d'illustration:
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;
}
http://www.w3schools.com/php/php_exception.asp – ArK
Avez-vous tenté encore? Quelle partie ne comprenez-vous pas? Et oui, la gestion des erreurs est une utilisation appropriée des exceptions. – Matthew