Źródło: Medium Ten post pomoże Ci lepiej zrozumieć, jak skutecznie obsługiwać wyjątki w Javie. Obsługa wyjątków Java może być wyzwaniem. Określenie, które wyjątki Java należy obsłużyć, które wyjątki należy zgłosić ponownie, a które po prostu zignorować, może być trudne. Istnieje jednak wiele przydatnych wskazówek, które mogą skutecznie pomóc w obsłudze wyjątków i tworzeniu nowych aplikacji. Zapoznajmy się z nimi.
- Uważaj, co rejestrujesz.
- Nie ignoruj zgłoszonych wyjątków.
- Użyj globalnej procedury obsługi wyjątków.
- Nie zamykaj zasobów ręcznie.
- Zgłaszaj wcześniej i obsługuj wyjątki później.
- Wyjątków Java nie należy rejestrować ani ponownie zgłaszać.
- Sprawdź wyłączone wyjątki.
- W instrukcji rzutu precyzyjnie zadeklaruj wyjątki.
- Najpierw obsłuż najbardziej oczywisty wyjątek.
- Użyj nowoczesnej semantyki obsługi wyjątków.
1. Uważaj, co rejestrujesz
Twórcy oprogramowania powinni zawsze być świadomi praw swoich klientów do bezpieczeństwa i prywatności.- Program Java może przenosić dane do innych systemów i ogromna liczba programistów i administratorów może z nim pracować (w tym naprawiać błędy).
- Jeśli w plikach dziennika zostaną zapisane jakiekolwiek wrażliwe dane, Twoja firma nie będzie spełniać wymogów bezpieczeństwa i możesz stracić pracę.
2. Nie ignoruj zgłoszonych wyjątków
Nie łap wyjątku, a następnie go ignoruj. Ukrywanie wyjątków nie jest dobrym sposobem radzenia sobie z nimi w Javie. Zapisz przynajmniej nazwę wyjątku i powiązany komunikat. Dzięki temu w Twoim wpisie będzie można znaleźć informację o problemie. Debugowanie aplikacji Java z powodu ukrytych wyjątków jest niezwykle trudne.3. Użyj globalnej procedury obsługi wyjątków
Podczas wykonywania programu zawsze wystąpią pewne wyjątki, które nie zostały wcześniej przechwycone w kodzie. Dlatego zawsze dodawaj globalną procedurę obsługi wyjątków do obsługi nieprzechwyconych wyjątków. Umożliwi to nie tylko zarejestrowanie i obsługę wyjątku, ale także zapobiegnie awarii aplikacji, jeśli wyjątek zostanie zgłoszony w czasie wykonywania.4. Nie zamykaj zasobów ręcznie
Innym ważnym zaleceniem dotyczącym obsługi wyjątków Java jest zezwolenie maszynie JVM na wywoływanie metody close() na zamykanych zasobach. Nie próbuj ich samodzielnie zamykać. Można to łatwo osiągnąć, inicjując zasoby w module try-resources . Semantyka:public class TryWithResourcesExample {
public static void main(String[] args) throws Exception {
try (Door door = new Door()) {
door.swing();
} catch (Exception e) { ..... }
} finally { .....}
}
}
Jak widać, po zakończeniu bloku try...catch maszyna JVM zamyka zasób, eliminując możliwość skomplikowanych i trudnych do naprawienia wycieków zasobów.
5. Zgłaszaj wcześniej i obsługuj wyjątki później
Zgłaszaj wyjątek za każdym razem, gdy w kodzie wystąpi warunek wyjątku. Nie czekaj na wykonanie jakichkolwiek wierszy kodu przed wyjściem z metody, w której się znajdujesz. Przy wyłapywaniu wyjątków funkcję należy umieścić na końcu metody. Zmniejsza to liczbę bloków catch w metodach, dzięki czemu kod jest łatwiejszy do odczytania i utrzymania.6. Nie należy rejestrować i ponownie zgłaszać wyjątków Java
Jeśli wystąpi wyjątek, wykonaj jedną z następujących czynności:- Kontynuuj pracę z programem podczas rejestrowania wyjątku.
- Zgłoś wyjątek ponownie i zezwól na inny sposób rejestrowania danych.
try {
Class.forName("com.min.Example");
} catch (ClassNotFoundException ex) {
log.warning("Class was not found.");
throw ex;
}
Powoduje to powielanie kodu i zatykanie plików dziennika zduplikowanymi wpisami, co znacznie utrudnia zdiagnozowanie kodu.
GO TO FULL VERSION