Sobes.tech
Middle

Ποιοι τρόποι υπάρχουν για την επεξεργασία των ελεγχόμενων εξαιρέσεων;

sobes.tech AI

Απάντηση από AI

  • Χρησιμοποιήστε το μπλοκ try-catch: επιτρέπει την πιάσιμο και επεξεργασία μιας εξαίρεσης, αποτρέποντας την αιφνίδια διακοπή του προγράμματος.
  • Δηλώστε ότι μια μέθοδος ρίχνει μια εξαίρεση, χρησιμοποιώντας τη λέξη-κλειδί throws στη υπογραφή της μεθόδου: αυτό μεταφέρει την ευθύνη για την επεξεργασία στον κώδικα που την καλεί.
  • Τυλίξτε μια ελεγχόμενη εξαίρεση σε μια μη ελεγχόμενη: επιτρέπει την προώθηση της εξαίρεσης χωρίς ρητή επεξεργασία, αλλά μπορεί να κρύψει ένα πραγματικό πρόβλημα.

Παράδειγμα χρήσης try-catch:

// Παράδειγμα χρήσης try-catch για την επεξεργασία μιας ελεγχόμενης εξαίρεσης
try {
    // Κώδικας που μπορεί να ρίξει μια ελεγχόμενη εξαίρεση (π.χ., IOException)
    FileReader file = new FileReader("my_file.txt");
    // Εργασία με το αρχείο...
} catch (IOException e) {
    // Επεξεργασία IOException
    e.printStackTrace(); // Εμφάνιση της στοίβας κλήσεων για αποσφαλμάτωση
    System.err.println("Σφάλμα κατά την εργασία με το αρχείο: " + e.getMessage());
}

Παράδειγμα χρήσης throws:

// Παράδειγμα χρήσης `throws` στη υπογραφή της μεθόδου
public void readFile(String fileName) throws IOException {
    FileReader file = new FileReader(fileName);
    // Εργασία με το αρχείο...
}

// Ο κώδικας που καλεί πρέπει να χειριστεί την IOException ή να την δηλώσει στη δική του υπογραφή
public void processFile(String filePath) {
    try {
        readFile(filePath);
    } catch (IOException e) {
        System.err.println("Σφάλμα κατά την ανάγνωση του αρχείου: " + e.getMessage());
    }
}

Παράδειγμα τυλίγματος σε μια μη ελεγχόμενη εξαίρεση:

// Παράδειγμα τυλίγματος μιας ελεγχόμενης εξαίρεσης σε μια μη ελεγχόμενη
public void unsafeOperation() {
    try {
        // Κώδικας που μπορεί να ρίξει μια ελεγχόμενη εξαίρεση
        throw new IOException("Παράδειγμα IOException")
    } catch (IOException e) {
        // Μετατροπή της ελεγχόμενης σε μη ελεγχόμενη
        throw new RuntimeException("Εντοπίστηκε σφάλμα στην λειτουργία", e);
    }
}