c exception handling tutorial with code examples
Tratarea excepțiilor este o metodă de gestionare a erorilor care pot apărea în timpul executării unui program. Acest tutorial explică gestionarea excepțiilor în C # cu exemple de cod:
java elimină un element dintr-o matrice
Manevrarea excepțiilor este utilizată pentru a vă asigura că fluxul programului este continuat chiar dacă există o eroare de execuție. Excepție fac obiectele care sunt aruncate în timp ce întâmpină orice eroare de rulare.
Dacă excepțiile nu sunt gestionate, atunci C # va produce un mesaj de excepție și va termina programul, aici intră în imagine tratarea excepțiilor.
=> Citiți aici Ghidul C # pentru începători
Ce veți învăța:
- Care sunt excepțiile?
- Cuvinte cheie pentru gestionarea excepțiilor
- Clase de excepție prezente în C #
- Manevrarea excepțiilor în C #
- Concluzie
- Lectură recomandată
Care sunt excepțiile?
Excepțiile sunt erori fără precedent care pot apărea în interiorul programului dvs. în timpul rulării. De cele mai multe ori programatorii pot detecta cu ușurință unele dintre erori, cum ar fi validarea sau verificarea nulă sau în timp ce verifică unele valori.
Dar există anumite momente în care nu putem anticipa ce sau când va apărea o eroare. De exemplu, să presupunem că caut un fișier într-o locație. Programul meu va rula perfect până când fișierul este prezent și dacă cumva fișierul a fost șters, atunci programul meu va declanșa o eroare.
Excepțiile nu apar în mod regulat, dar se pot întâmpla și veți dori întotdeauna să le gestionați cu atenție. Pentru a gestiona acestea, folosim gestionarea excepțiilor.
Ori de câte ori apare o eroare spunem că este aruncată, „aruncat” este un obiect din System.Exception clasa în C #. System.Exception class oferă diferite metode și proprietăți care oferă detalii despre eroarea pe care tocmai a întâlnit-o programul dvs.
La fel ca proprietatea de urmărire a stivei care oferă stiva pentru care a apărut problema sau Proprietatea mesaj care oferă o descriere a excepției.
Întrebări și răspunsuri la interviul HP Quality Center
Cuvinte cheie pentru gestionarea excepțiilor
Excepțiile oferă un proces pentru a controla o anumită parte a programului, astfel încât, chiar dacă există o excepție în acea parte, atunci controlul programului este transferat într-o altă parte a programului. În C # tratarea excepțiilor este practic construită în jurul a patru cuvinte cheie: aruncați, încercați, prindeți și în cele din urmă .
arunca
După cum am discutat deja aruncarea este un obiect din System.Exception clasa în C #. Permite programului să arunce o eroare ori de câte ori întâlnește una.
încerca
Încercați blocul închide blocul codului care poate determina programul să arunce o excepție. Este urmat de unul sau mai multe blocuri de captură.
captură
Când blocul de încercare întâlnește o excepție, acesta oferă controlul blocului de captură pentru a prinde excepția. Blocul de captură poate conține, de asemenea, un set de coduri pe care programul trebuie să le execute în cazul unei excepții sau poate doar să prindă excepția și să nu facă nimic în funcție de scenariu și cerință.
in cele din urma
Blocul final este utilizat pentru a executa un anumit fragment de cod sau instrucțiune, indiferent de apariția unei excepții. În cele din urmă, blocul este întotdeauna executat și poate fi executat imediat după blocul de încercare, dacă programul nu găsește nicio excepție sau poate fi executat după blocul de captură odată ce programul prinde o excepție.
Clase de excepție prezente în C #
Toate excepțiile din C # sunt derivate direct sau indirect din System.Exception clasă.
Să aruncăm o scurtă privire la unele dintre cele mai frecvente excepții:
- System.IO.IOException: Se ocupă de orice erori legate de intrare și ieșire.
- System.DividedByZeroException: Tratează eroarea aruncată atunci când un număr este împărțit la zero.
- System.NullReferenceException : Gestionează orice eroare care poate apărea atunci când se face referire la un obiect nul.
- System.IndexOutOfRangeException: Tratează erorile aruncate atunci când un program încearcă să acceseze un index care este în afara intervalului pentru matrice.
- System.OutOfMemoryException: Manevrează eroarea aruncată din cauza prezenței insuficiente a memoriei.
Manevrarea excepțiilor în C #
C # are o soluție foarte bine definită pentru gestionarea oricărui tip de excepție care poate apărea prin utilizarea blocului try and catch. Folosind acest bloc, declarația de bază a programului poate fi separată de celelalte instrucțiuni.
Exemplu:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } Console.ReadLine(); } } }
În exemplul de mai sus, am inclus codul nostru pentru deschiderea unui fișier sub blocul try. Deoarece nu am furnizat nicio cale validă a fișierului, codul ar trebui să arunce o eroare. Acum, am detectat eroarea în blocul nostru de captură. Dacă fișierul nu există în calea fișierului dat, atunci codul va arunca o excepție FileNotFoundException.
Această excepție va fi surprinsă de blocul de captură unde am definit deja excepția așteptată. Acum, să ne imaginăm dacă codul nostru aruncă o altă excepție, alta decât cea pe care am definit-o deja, atunci blocul nostru nu va putea să-l prindă. Pentru a prinde orice excepție generică, vom adăuga un alt bloc de captură.
Să ne uităm la codul nostru actualizat:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } Console.ReadLine(); } } }
Acest bloc de captură generic va putea prinde toate excepțiile care pot fi aruncate în interiorul blocului de încercare. Acum, să adăugăm și un bloc final pentru a finaliza acest lucru. Pentru a simplifica acest lucru, permiteți-ne să imprimăm un mesaj folosind blocul final.
cele mai bune curățătoare de registre pentru Windows 10
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
Aici, tocmai am adăugat blocul final cu un mesaj simplu. De asemenea, puteți adăuga câteva declarații personalizate în bloc. Dar structura generală a programului va rămâne similară cu cea afișată aici.
Blocul Final va fi întotdeauna executat, indiferent dacă există sau nu o excepție. Programul va începe de la blocul try și apoi se va deplasa direct la blocul final dacă nu există erori / excepții. Dacă întâlnește o excepție, atunci se va muta pentru a prinde mai întâi și apoi va executa blocul final.
Există o condiție în care blocul final nu va fi executat?
După cum sugerează și numele, blocul final este executat la sfârșit și este blocul final al codului care va fi executat. În cele din urmă, blocul se va executa întotdeauna când aplicația rulează. Singurul moment în care blocul final nu se va executa este când aplicația se blochează sau este ucisă intenționat folosind comanda de proces.
Concluzie
Dacă excepțiile nu sunt gestionate corect, atunci acestea vor provoca erori în programul dvs. Dacă nu ați folosit blocuri try / catch nicăieri în codul dvs., atunci programul dvs. se va întrerupe cu un mesaj care arată excepția. Pentru un utilizator generic, acest lucru va fi foarte dificil să urmărească eroarea înapoi la codul sursă și să o rezolve.
Prin urmare, este întotdeauna o bună practică să oferiți gestionarea excepțiilor în programul dvs.
Cod simplu
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
=> Vedeți seria noastră completă de antrenament C # aici
Lectură recomandată
- C # Funcții / Metode Tutorial cu exemple de cod
- Tutorial Python DateTime cu exemple
- Tutorial SVN: Gestionarea codului sursă folosind Subversion
- C # String Tutorial - Metode de șiruri cu exemple de coduri
- Manevrarea excepțiilor în C ++
- Tutorial SVN Tortoise: Revizuiri în depozitul de coduri
- Tutorial AWS CodeBuild: Extragerea codului din Maven Build
- Cum să gestionați excepția în scripturile SoapUI Groovy - Tutorialul SoapUI # 11