Alcune linee guida per la gestione delle eccezioni

domenica 26 febbraio 2012 - 17.10
Tag Elenco Tags  C#  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010

enzom83 Profilo | Newbie

Ho implementato una classe in C# con alcuni metodi che lanciano un'eccezione se qualche parametro specificato non è valido.
Due di questi metodi sono il metodo Add e il metodo Remove, che lanciano un'eccezione se il parametro specificato è null.
Poi c'è il metodo Replace, che serve per sostituire l'oggetto specificato come primo parametro con l'oggetto specificato come secondo parametro: questo metodo fondamentalmente prima invoca Remove per rimuovere il primo oggetto e poi chiama Add per rimuovere il secondo; ovviamente anche il metodo Replace potrebbe lanciare un'eccezione se il primo e/o il secondo parametro è null, quindi ho tre possibilità...

1) Dentro il metodo Replace controllo entrambi i parametri per vedere se sono null e lancio l'opportuna eccezione, e dopo chiamo i metodi Remove e Add della classe stessa. Ma in questo modo, i parametri verrebbero controllati due volte: prima dal metodo Replace e poi dagli altri due metodi, il che non va bene se i controlli fossero più onerosi che una semplice verifica di null... Ecco perché ho pensato ad una soluzione alternativa.

2) Dentro il metodo Replace non effettuo alcun controllo che verrebbe effettuato poi dai metodi Remove e Add: in questo modo, se Remove o Add lanciano delle eccezioni, queste vengono lanciate anche dal metodo Replace se uno dei due parametri è null.

3) Aggiungo due metodi privati per l'aggiunta e la rimozione (AddPrivate e RemovePrivate), ma che non effettuano alcuna verifica dei parametri in ingresso, così che il metodo Add prima verifica il parametro e poi chiama AddPrivate, il metodo Remove prima verifica il parametro e poi invoca RemovePrivate, infine il metodo Replace prima verifica i due parametri e poi invoca in ordine RemovePrivate e AddPrivate.

Quale delle soluzioni è migliore?

Vi ringrazio in anticipo per eventuali consigli!

alx_81 Profilo | Guru

Ciao
>2) Dentro il metodo Replace non effettuo alcun controllo che
>verrebbe effettuato poi dai metodi Remove e Add: in questo modo,
>se Remove o Add lanciano delle eccezioni, queste vengono lanciate
>anche dal metodo Replace se uno dei due parametri è null.
secondo me questa. In questo modo la try catch la puoi fare su ogni metodo avendo la garanzia che uno dei due ti rilancia l'eccezione.

>Vi ringrazio in anticipo per eventuali consigli!
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5