Junior
Πώς θα πετάγατε εξαιρέσεις πιο πάνω στη στοίβα κλήσεων;
sobes.tech AI
Απάντηση από AI
Χρησιμοποιώ τη λέξη-κλειδί throw για να επαναφέρω ή να δημιουργήσω μια νέα εξαίρεση.
public void method1() throws CustomException {
try {
// Κάποιος κώδικας που μπορεί να ρίξει AnotherException
method2();
} catch (AnotherException e) {
// Συλλέγουμε το AnotherException
// Το τυλίγουμε σε CustomException και το ρίχνουμε προς τα πάνω
throw new CustomException("Σφάλμα στο Method2: " + e.getMessage(), e);
}
}
public void method2() throws AnotherException {
// Κάποιος κώδικας που μπορεί να ρίξει μια εξαίρεση
throw new AnotherException("Κάτι πήγε στραβά στο Method2");
}
class CustomException extends Exception {
public CustomException(String message, Throwable cause) {
super(message, cause);
}
}
class AnotherException extends Exception {
public AnotherException(String message) {
super(message);
}
}
Ή, αν απλά θέλετε να επαναφέρετε την捕获μένη εξαίρεση χωρίς να δημιουργήσετε μια νέα:
public void methodA() throws SomeException {
try {
methodB();
} catch (SomeException e) {
// Καταγραφή ή άλλες ενέργειες
// Επαναφέρετε την ίδια εξαίρεση προς τα πάνω
throw e;
}
}
public void methodB() throws SomeException {
// Κώδικας που μπορεί να ρίξει SomeException
throw new SomeException("Σφάλμα στο MethodB");
}
class SomeException extends Exception {
public SomeException(String message) {
super(message);
}
}