Izņēmums ir kļūda, kas rodas izpildlaikā un pārtrauc normālu programmas izpildes plūsmu, ja tā netiek pareizi apstrādāta. Ja rodas izņēmumi, iespējams, nevēlaties lietotājam atklāt faktisko kaudzes izsekošanas vai izņēmuma ziņojumu. Pielāgotus izņēmumus var izmantot, lai izņēmumiem pievienotu skaidru, jēgpilnu un lietotājam draudzīgu informāciju, ja programmas darbības laikā rodas kļūdas.
Bāzes klase visiem izņēmumiem domēnā .Net ir Izņēmums
. Visas izņēmumu hierarhijas klases tieši vai netieši izriet no šīs klases. Ņemiet vērā, ka System.ApplicationException
un System.SystemException
klases pagarina Sistēma. Izņēmums
klase, kas savukārt ir atvasināta no Sistēma. Objekts
klasē. Ņemiet vērā, ka izņēmumi ir tāpat kā jebkura cita veida .Net.
ApplicationException vs System.Exception
Lai izveidotu pielāgotu izņēmumu klasi, jums jādefinē tips. Veidojot pielāgotu izņēmumu klases, jums vajadzētu atvasināt savu klasi Sistēma. Izņēmums
nevis no ApplicationException
. ApplicationException
sākotnēji bija paredzēts izmantot, lai izveidotu lietotāja definētus izņēmumus, taču to vairs nav ieteicams izmantot. Kā norādīts Microsoft dokumentācijā:
Izņēmums
klases, nevisApplicationException
klasē. Jums nevajadzētu mestApplicationException
izņēmums jūsu kodā, un jums nevajadzētu noķertApplicationException
izņēmums, ja vien jūs neplānojat mest sākotnējo izņēmumu.Iemesls ApplicationException
ir novecojis, ir tas, ka tā lietošana nevajadzīgi paplašina izņēmumu hierarhiju. Lai gan ApplicationException
klase paplašina Izņēmums
klasē, tas nepievieno jaunu funkcionalitāti. Tās vienīgais mērķis bija nodrošināt veidu, kā atšķirt izņēmumus, ko definē lietojumprogrammas, un izņēmumus, ko nosaka sistēma.
Pielāgotu izņēmumu klases projektēšana
Tagad iedziļināsimies kādā kodā. Šis koda fragments parāda, kā jūs varat sākt izveidot pielāgotu izņēmumu klasi C #, atvasinot Sistēma. Izņēmums
klasē. Ņemiet vērā, ka pielāgotajai izņēmumu klasei ir jānorāda nozīmīgs nosaukums. Šajā piemērā mēs izveidosim pielāgotu izņēmumu klasi ar nosaukumu LoginException,
ko var izmantot, lai aizturētu kļūdas, kas var rasties, kad lietotājs piesakās sistēmā, piemēram, ja lietotāja akreditācijas dati nav pareizi.
publiskā klase LoginException: System.Exception{
//DARĪT
}
Šis kodu saraksts parāda mūsu pielāgoto izņēmumu klasi, kurā ir ieviesti noklusējuma un argumentu konstruktori.
publiskā klase LoginException: System.Exception{
///
/// Noklusējuma konstruktors
///
publiskā pieteikšanās izņēmums (): bāze ()
{
}
///
/// Argumentu konstruktors
///
/// Šis ir izņēmuma apraksts
publisks LoginException (virknes ziņojums): bāze (ziņojums)
{
}
///
/// Argumentu konstruktors ar iekšēju izņēmumu
///
/// Šis ir izņēmuma apraksts
/// Iekšējais izņēmums
publisks LoginException (virknes ziņojums, Exception internalException): bāze (message, innerException)
{
}
///
/// Argumentu konstruktors ar serializācijas atbalstu
///
/// SerializationInfo instance
/// StreamingContext instance
aizsargāts LoginException (SerializationInfo informācija, StreamingContext konteksts): bāze (informācija, konteksts)
{
}
}
Ievērojiet parametru lietojumu LoginException
klase un kā tiek saukti bāzes klases konstruktori. Ņemiet vērā arī to, kā pēdējais argumentu konstruktors tiek izmantots, lai sniegtu atbalstu serializācijai.
Izmantojot pielāgotu izņēmumu klasi
Šis kodu saraksts parāda, kā jūs varat izmantot LoginException
klasē, kuru mēs tikko īstenojām.
static void Main (virkne [] args){
mēģiniet
{
// Lai pieteiktos lietotājam, uzrakstiet kodu šeit.
// Ja sniegtie akreditācijas dati nav derīgi
// tiek izmests izņēmuma objekts.
mest jaunu LoginException (“Ir sniegti nederīgi akreditācijas dati ...”);
}
nozveja (LoginException loginException)
{
// Šeit ierakstiet kodu, lai rīkotos ar izņēmumu
Console.WriteLine (loginException.Message);
}
Konsole. Lasīt ();
}
Ņemiet vērā, ka pielāgotās izņēmumu klases jums jāievieš tikai tad, ja vēlaties savās lietojumprogrammās pievienot vairāk funkcionalitātes izņēmumu apstrādei vai ja ir lietderīgi lietotājam sniegt papildu informāciju. Vairumā gadījumu jūs vēlaties paļauties uz standarta izņēmumiem. Net jums dod.