Στην C#, οι εξαιρέσεις (exceptions) και η διαχείριση σφαλμάτων (error handling) είναι σαν να έχουμε μια ομπρέλα που μας προστατεύει όταν κάτι πάει στραβά στο πρόγραμμα μας. Ας δούμε τι σημαίνει αυτό με απλά λόγια.
Τι είναι οι Εξαιρέσεις;
Οι εξαιρέσεις είναι σαν κόκκινες σημαίες που σηκώνονται όταν κάτι δεν πάει καλά στο πρόγραμμα μας. Για παράδειγμα, αν προσπαθήσεις να διαιρέσεις έναν αριθμό με το μηδέν, αυτό είναι ένα λάθος, και το πρόγραμμα θα σηκώσει μια εξαίρεση.
Γιατί Χρειαζόμαστε Εξαιρέσεις;
Χρειαζόμαστε εξαιρέσεις για να μπορούμε να αντιμετωπίζουμε τα λάθη με έναν οργανωμένο τρόπο. Αν δεν είχαμε εξαιρέσεις, το πρόγραμμα μας θα σταματούσε ξαφνικά όταν συνέβαινε ένα λάθος, και δεν θα μπορούσαμε να κάνουμε τίποτα για αυτό.
Πώς Διαχειριζόμαστε τις Εξαιρέσεις;
Για να διαχειριστούμε τις εξαιρέσεις στην C#, χρησιμοποιούμε τις λέξεις-κλειδιά try
, catch
, και finally
.
- try: Εδώ βάζουμε τον κώδικα που μπορεί να προκαλέσει μια εξαίρεση.
- catch: Εδώ βάζουμε τον κώδικα που θέλουμε να εκτελεστεί αν συμβεί μια εξαίρεση.
- finally: Εδώ βάζουμε τον κώδικα που θα εκτελεστεί οπωσδήποτε, είτε συμβεί εξαίρεση είτε όχι. (Προαιρετικό)
Παράδειγμα
Ας δούμε ένα παράδειγμα για να καταλάβουμε πώς λειτουργούν όλα αυτά:
using System;
class Program
{
static void Main()
{
try
{
// Προσπαθούμε να διαιρέσουμε έναν αριθμό με το μηδέν
int numerator = 10;
int denominator = 0;
int result = numerator / denominator;
Console.WriteLine("Το αποτέλεσμα είναι: " + result);
}
catch (DivideByZeroException e)
{
// Εδώ διαχειριζόμαστε την εξαίρεση της διαίρεσης με το μηδέν
Console.WriteLine("Σφάλμα: Δεν μπορούμε να διαιρέσουμε με το μηδέν!");
}
finally
{
// Αυτός ο κώδικας θα εκτελεστεί πάντα
Console.WriteLine("Το πρόγραμμα ολοκληρώθηκε.");
}
}
}
Τι Συμβαίνει στο Παράδειγμα;
- try: Στην ενότητα
try
, προσπαθούμε να διαιρέσουμε τοnumerator
με τοdenominator
, που είναι 0. Αυτό προκαλεί μια εξαίρεσηDivideByZeroException
. - catch: Όταν συμβεί η εξαίρεση, ο έλεγχος περνά στην ενότητα
catch
, όπου εμφανίζουμε ένα μήνυμα ότι δεν μπορούμε να διαιρέσουμε με το μηδέν. - finally: Η ενότητα
finally
εκτελείται πάντα, και εμφανίζει το μήνυμα “Το πρόγραμμα ολοκληρώθηκε.”
Γιατί Είναι Σημαντικό;
Η διαχείριση εξαιρέσεων μας βοηθά να κρατάμε τα προγράμματά μας ασφαλή και σταθερά. Μπορούμε να προγραμματίσουμε το τι θα συμβεί όταν κάτι πάει στραβά, αντί να αφήσουμε το πρόγραμμα να καταρρεύσει.
Άσκηση
Προσπάθησε να γράψεις ένα πρόγραμμα που ζητά από τον χρήστη να εισάγει δύο αριθμούς και να τους διαιρέσει. Χρησιμοποίησε διαχείριση εξαιρέσεων για να διαχειριστείς την περίπτωση όπου ο χρήστης προσπαθεί να διαιρέσει με το μηδέν.
Λύση:
using System;
class Program
{
static void Main()
{
try
{
Console.Write("Δώστε τον πρώτο αριθμό: ");
int numerator = Convert.ToInt32(Console.ReadLine());
Console.Write("Δώστε τον δεύτερο αριθμό: ");
int denominator = Convert.ToInt32(Console.ReadLine());
int result = numerator / denominator;
Console.WriteLine("Το αποτέλεσμα είναι: " + result);
}
catch (DivideByZeroException e)
{
Console.WriteLine("Σφάλμα: Δεν μπορούμε να διαιρέσουμε με το μηδέν!");
}
catch (FormatException e)
{
Console.WriteLine("Σφάλμα: Παρακαλώ εισάγετε έγκυρους αριθμούς!");
}
finally
{
Console.WriteLine("Το πρόγραμμα ολοκληρώθηκε.");
}
}
}
Αυτό το παράδειγμα δείχνει πώς να ζητάς αριθμούς από τον χρήστη και να διαχειρίζεσαι τις εξαιρέσεις που μπορεί να προκύψουν, όπως η διαίρεση με το μηδέν και η εισαγωγή μη έγκυρων αριθμών.