Quindi sono un po 'preoccupato per la mia gestione degli errori ... Attualmente il mio percorso di esecuzione è simile a questo:
Users.aspx -> App_Code/User.cs -> Data Layer/User.cs
Così ora quando provo ad aggiornare un record utente, inserisco il mio blocco Try / Catch nel gestore eventi e mi assicuro che solo la classe App_Code interagisca con il livello dati. Le eccezioni che si verificano sul livello dati, a quanto mi risulta, dovrebbero diventare bolle al gestore eventi di seguito.
Nel livello dati, ho iniziato con questo:
public void Update()
{
var product = (from p in db.products
where p.productid == id
select p).FirstOrDefault();
if (product != null)
{
// update the thing
}
}
Maggiori informazioni su reddit .
Dopo aver parlato con un amico, ha consigliato qualcosa di simile a questo:
public void Update()
{
int count = db.users.Count(u => u.userid == id);
if (count == 0) // no user found
{
throw new ValidationException(String.Format("User not found for id {0}.", id));
}
if (count > 1) // multiple users
{
throw new ValidationException(String.Format("Multiple users found for id {0}.", id));
}
var user = db.users.FirstOrDefault(u => u.userid == id);
// update the user record
}
Poi sono passato a IRC e mi hanno suggerito creare le mie eccezioni .
Posso vedere i professionisti qui, ma sembra un po 'inutile quando l'opzione del mio amico funzionerà bene.
Fondamentalmente sono solo molto confuso su come dovrei gestirlo ... Ovviamente la mia opzione iniziale è insufficiente, ma sembra che creare le mie eccezioni potrebbe complicare troppo le cose.
Quindi cosa dovrei fare qui?