2010-09-28 4 views
1

Quelqu'un pourrait-il s'il vous plaît fournir quelques bonnes pratiques pour gérer les exceptions dans l'exception par exemple, j'aiGestion des exceptions dans le bloc exception

try { 
... 
DeserializationResult deserialization = xmlSerializationService.deserializeFromXml(node); 
some code here 
} catch (Exception e) { 

try { 

//I need to create process result xml with error code and some details 
// creation of result xml document 

} catch (Exception e) { 

// maybe some error message here 

    } 

} 

puis-je faire en quelque sorte ce code semble plus clair, et sans bruit plus facile à comprendre? Merci pour les réponses. P.S. Je sais que l'utilisation de l'exception générale n'est pas une bonne pratique, c'est juste par exemple un but ici.

Répondre

1

La première approximation pour résoudre ce problème est généralement de placer la logique de la capture dans une méthode séparée, et de n'avoir qu'une seule ligne dans le bloc catch (l'appel de méthode).

+0

+1 pour taper plus vite ;-) –

+0

Had idée similaire, donc je suppose que je viens de s'y tenir. – artjomka

0

Toujours attraper des exceptions spécifiques, pas la superclasse d'exception générale.

Si je regarde ce code, je ne suis pas sûr de ce qui peut mal se passer. Si vous prenez spécifiquement des exceptions, il est beaucoup plus facile de voir les échecs auxquels vous vous attendez.

Également gérer chaque défaillance d'une manière spécifique qui a un sens pour cette défaillance. La forme la plus simple consiste à renvoyer un résultat décrivant l'échec.

Peut-être quelque chose comme:

try{ 
    //DeserializationResult deserialization = xmlSerializationService.deserializeFromXml(node); 
    //some code here 
}catch(NullPointerException npe){ 
    //Maybe return something like: new DeserializationResult("xmlSerializationService not initialized") 
}catch(DeserializationException dse){ 
    //Maybe return something like: new DeserializationResult("Could not deserialize because ...") 
}