Salut,

J'ai une question sur l'utilisation de try catch imbriqués lors d'opération PDO sur une bdd.
Le code est schématique mais le principe est là:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
try{
	//insertion PDO dans la table1;
	$table1->insert($args);
	$lastid=$db->lastInsertId();
	try{
		//update PDO dans la table 1
		//update PDO dans la table 2
	}
	catch(Exception $e){
		//CODE ERREUR2: erreur de l'update d'une(ou des deux) table 1/2
		$table1->delete($lastid);
		echo 'Une erreur 2 s\'est produite';
	}
}					
catch(Exception $e){
	//CODE ERREUR1: Une erreur s'est produite lors de l'insertion dans la table 1
	echo 'Une erreur 1 s\'est produite';
}
En cas d'erreur dans le deuxième try/catch (update), le premier est-il déclenché aussi (CODE ERREUR1 s'execute-t-il?) ?
Si oui, comment y remédier ??
Je cherche ici à remplacer des
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
if(insert(/*retourne un rowcount()*/)){}
else{}
de façon à ce que le code continue de s'exécuter en cas d'erreur.

edit: Lequel des codes suffirait à gérer l'exception tout en voulant faire ce que je souhaite, à savoir:
-inserer dans une table,
-Si insertion ok: updater cette dernière ainsi qu'une autre (partage de clé), si Exception -> message.
-Si ok mais un des update échoue aussi, alors on supprime le last inserted id de la première table et on affiche un message??

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
try{
	//insertion PDO dans la table1;
	if($table1->insert($args)){
		$lastid=$db->lastInsertId();
		if( !(table1->update($argspartagés) && table2->update($argspartagés))){
			//CODE ERREUR2: erreur de l'update d'une(ou des deux) table 1/2
			echo 'Une erreur différente  s\'est produite';
		}
	}
}					
catch(Exception $e){
	//CODE ERREUR1: Une erreur s'est produite
	echo 'Une erreur s\'est produite';
}
Merci à tous.