c exception handling tutorial with code examples
El tractament d'excepcions és un mètode per tractar els errors que es poden produir durant l'execució d'un programa. Aquest tutorial explica el maneig d'excepcions en C # amb exemples de codi:
millor dispositiu espia per a telèfons mòbils
La gestió d'excepcions s'utilitza per assegurar-se que el flux del programa continua, fins i tot si hi ha un error d'execució. Les excepcions són els objectes que es llancen mentre es produeix un error en temps d'execució.
Si no es gestionen les excepcions, aleshores C # produirà un missatge d’excepció i finalitzarà el programa, aquí és on apareix el tractament d’excepcions.
=> Llegiu aquí la guia C # per a principiants
Què aprendreu:
- Quines són les excepcions?
- Paraules clau per al maneig d'excepcions
- Classes d’excepció presents a C #
- Gestió d'excepcions a C #
- Conclusió
- Lectura recomanada
Quines són les excepcions?
Les excepcions són errors sense precedents que es poden produir dins del programa durant el temps d'execució. La majoria de les vegades els programadors poden detectar fàcilment alguns dels errors, com ara la validació o la comprovació de nuls o mentre es comproven alguns valors.
Però hi ha certs moments en què no podem preveure què o quan apareixerà un error. Per exemple, diguem que estic buscant un fitxer en una ubicació. El meu programa funcionarà perfectament fins que el fitxer estigui present i, d’alguna manera, el fitxer s’ha suprimit, el meu programa generarà un error.
Les excepcions no es produeixen regularment, però poden succeir i sempre voldreu gestionar-les amb cura. Per gestionar-los, fem servir el tractament d’excepcions.
Sempre que es produeix un error diem que es llença, 'llançat' és un objecte de System.Exception classe en C #. El System.Exception class ofereix diferents mètodes i propietats que proporcionen detalls sobre l'error que acaba de trobar el vostre programa.
Com la propietat de rastreig de pila que proporciona la pila per a la qual s'ha produït el problema o la propietat Message que proporciona una descripció de l'excepció.
Paraules clau per al maneig d'excepcions
Les excepcions ofereixen un procés per controlar una determinada part del programa, de manera que fins i tot si hi ha una excepció en aquesta part, el control del programa es transfereix a una altra part del programa. A C #, la gestió de les excepcions es basa bàsicament en quatre paraules clau: llançar, provar, atrapar i finalment .
llançar
Com ja hem comentat llançar és un objecte de System.Exception classe a C #. Permet al programa llançar un error sempre que es troba amb un.
programes d’entrevistes java i respostes per a persones amb experiència
provar
El bloc de prova inclou el bloc del codi que pot fer que el programa generi una excepció. El segueixen un o més blocs de captura.
atrapar
Quan el bloc de prova troba una excepció, proporciona el control al bloc de captura per capturar l'excepció. El bloc de captura també pot contenir un conjunt de codis que el programa ha d’executar en cas d’excepció o només pot capturar l’excepció i no fer res en funció de l’escenari i del requisit.
finalment
El bloc final s’utilitza per executar un fragment o una instrucció de codi particular independentment de l’aparició d’una excepció. Finalment, sempre s’executa el bloc i es pot executar just després del bloc de prova si el programa no troba cap excepció o es pot executar després del bloc de captura un cop el programa agafa una excepció.
Classes d’excepció presents a C #
Totes les excepcions del C # es deriven directament o indirectament del fitxer System.Exception classe.
Vegem breument algunes de les excepcions més habituals:
- System.IO.IOException: Maneja qualsevol error relacionat amb l'entrada i la sortida.
- System.DividedByZeroException: Gestiona l'error generat quan un número es divideix per zero.
- System.NullReferenceException : Gestiona qualsevol error que es pugui produir quan es fa referència a un objecte nul.
- System.IndexOutOfRangeException: Maneja els errors generats quan un programa intenta accedir a un índex que està fora del rang de la matriu.
- System.OutOfMemoryException: Gestiona l'error generat a causa de la presència insuficient de memòria.
Gestió d'excepcions a C #
C # té una solució molt ben definida per gestionar qualsevol tipus d’excepció que es pugui produir mitjançant l’ús del bloc try and catch. Mitjançant aquest bloc, la sentència bàsica del programa es pot separar de la resta de sentències.
Exemple:
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(); } } }
A l'exemple anterior, hem inclòs el nostre codi per obrir un fitxer sota el bloc try. Com que no hem proporcionat cap ruta de fitxer vàlida, el codi hauria de generar un error. Ara hem detectat l’error al nostre bloc de captures. Si el fitxer no existeix al camí d'accés del fitxer donat, el codi generarà una excepció FileNotFoundException.
Aquesta excepció serà capturada pel bloc de captura on ja hem definit l'excepció esperada. Ara, imaginem-nos si el nostre codi produeix alguna altra excepció, que no sigui la que ja hem definit, el nostre bloc no el podrà capturar. Per detectar qualsevol excepció genèrica, afegirem un altre bloc de captures.
Vegem el nostre codi actualitzat:
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(); } } }
Aquest bloc de captura genèric podrà capturar totes les excepcions que es poden llançar dins del bloc de prova. Ara, afegim també un bloc final per completar-ho. Per fer-ho més senzill, simplement imprimim un missatge amb el bloc final.
matrius multidimensionals a Java
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(); } } }
Aquí acabem d’afegir el bloc final amb un senzill missatge. També podeu afegir algunes declaracions personalitzades al bloc. Però l'estructura general del programa es mantindrà similar a la que es mostra aquí.
El bloc Final sempre s’executarà independentment de si hi ha una excepció o no. El programa s'iniciarà a partir del bloc de prova i es mourà directament al bloc final si no hi ha errors / excepcions. Si troba una excepció, es mourà per capturar primer i després executarà el bloc final.
Hi ha alguna condició quan no s'executi el bloc final?
Com el seu nom indica, el bloc final s'executa al final i és el bloc final del codi que s'executarà. Finalment, el bloc sempre s'executarà quan s'està executant l'aplicació. L'únic moment en què finalment no s'executarà el bloqueig és quan l'aplicació falla o es destina intencionadament mitjançant l'ordre de procés.
Conclusió
Si les excepcions no es gestionen correctament, provocaran errors al vostre programa. Si no heu utilitzat blocs try / catch en cap lloc del vostre codi, el programa s'avortarà amb un missatge que mostrarà l'excepció. Per a un usuari genèric, serà molt difícil rastrejar l’error al codi font i resoldre’l.
Per tant, sempre és una bona pràctica proporcionar un tractament d’excepcions al vostre programa.
Codi de mostra
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(); } } }
=> Vegeu la nostra sèrie completa d’entrenaments C # aquí
Lectura recomanada
- C # Funcions / Mètodes Tutorial amb exemples de codi
- Tutorial de Python DateTime amb exemples
- Tutorial SVN: Gestió del codi font mitjançant Subversion
- Tutorial de cadenes C #: mètodes de cadenes amb exemples de codi
- Gestió d'excepcions a C ++
- Tutorial SVN de tortuga: revisions al dipòsit de codis
- Tutorial AWS CodeBuild: extracció de codi de Maven Build
- Com gestionar l'excepció en scripts SoapUI Groovy - Tutorial SoapUI núm. 11