w tym samouczku Java exceptions dowiesz się, czym jest wyjątek w Javie, czym jest wyjątek zaznaczony i czym różni się od wyjątku zaznaczonego. Poznamy również kilka najlepszych praktyk dotyczących WYJĄTKÓW sprawdzonych w Javie.
Table of Contents1. What is an exception in Java?2. Checked vs unchecked exceptions in Java3. Java exception handling best practices
co to jest wyjątek w Javie?
„wyjątek jest nieoczekiwanym zdarzeniem występującym podczas wykonywania programu, które zakłóca normalny przepływ instrukcji.,”
w Javie wszystkie błędy i wyjątki są reprezentowane przez klasę Throwable. Gdy w metodzie wystąpi błąd, metoda wytworzy obiekt (dowolnego podtypu Throwable
) I przekaże go systemowi runtime. Obiekt, zwany obiektem wyjątku.
obiekt wyjątku zawiera informacje o błędzie, w tym jego typ i stan programu, w którym wystąpił błąd. Wytworzenie obiektu wyjątku i przekazanie go do systemu runtime nazywa się wyrzuceniem wyjątku.
1.1., Obsługa wyjątków
mamy dwie możliwości, gdy obiekt wyjątku jest tworzony w naszej aplikacji.
- albo będziemy obsługiwać go w metodzie
- lub możemy przekazać go do metody wywołującej, aby pozwolić jej obsługiwać.
jest to bardzo ważna decyzja, którą należy podjąć przy ustalaniu obowiązków metody. Metoda powinna wyraźnie wskazywać, że wszystkie wyjątkowe scenariusze będą obsługiwane, a które nie. Jest on zdefiniowany w składni metody za pomocą klauzuli throws.
aby obsłużyć wyjątek, musimy go złapać w sekcji catch bloku try-catch.,
If an exception is not handled in the application, then it will propagate to JVM and JVM will usually terminate the program itself.
Checked vs unchecked exceptions in Java
2.1. Exception Hierarchy
In Java, exceptions are broadly categorized into two sections: checked exceptions and unchecked exceptions.
2.2. Checked Exceptions
Java forces you to handle these error scenarios in some manner in your application code., Pojawią się natychmiast na twojej twarzy, gdy zaczniesz kompilować swój program. Zdecydowanie można je zignorować i pozwolić im przejść do JVM, ale to zły nawyk. Idealnie, musisz obsłużyć te wyjątki na odpowiednim poziomie wewnątrz aplikacji, aby móc poinformować użytkownika o niepowodzeniu i poprosić go o ponowne spróbowanie / przyjście później.
ogólnie, zaznaczone wyjątki oznaczają scenariusze błędów, które są poza bezpośrednią kontrolą programu. Występują one zwykle w interakcji z zewnętrznymi zasobami / zasobami sieciowymi np. problemy z bazą danych, błędy połączenia sieciowego, brakujące pliki itp.,
Checked exceptions are subclasses of Exception class.
Example of checked exceptions are : ClassNotFoundException, IOException, SQLException and so on.
Checked Exception Example
FileNotFoundException
is a checked exception in Java. Anytime, we want to read a file from filesystem, Java forces us to handle error situation where file may not be present in place.
public static void main(String args) { FileReader file = new FileReader("somefile.txt");}
In above case, you will get compile time error with message – Unhandled exception type FileNotFoundException
.,
aby program mógł się skompilować, musisz obsłużyć ten błąd w bloku try-catch
. Poniżej podany kod będzie kompilowany absolutnie dobrze.
2.3. Niezaznaczone wyjątki
Java udostępnia również niezaznaczone wyjątki, których wystąpienia nie są sprawdzane przez kompilator. Wejdą w życie / pojawią się w twoim programie, po wykonaniu dowolnego błędnego kodu.
metoda nie jest zmuszona przez kompilator do deklarowania niezaznaczonych WYJĄTKÓW rzucanych przez jej implementację. Ogólnie rzecz biorąc, takie metody prawie zawsze ich nie deklarują.,
niezaznaczone wyjątki są podklasami RuntimeException. Przykładami WYJĄTKÓW niezaznaczonych są: ArithmeticException
, ArrayStoreException
, ClassCastException
I tak dalej.
Exception
tzn. wszystkie niezaznaczone klasy WYJĄTKÓW powinny być sprawdzane domyślnie, ale tak nie jest.”Unchecked Exception Example
Checkout the given code below. Powyższy kod nie daje żadnego błędu w czasie kompilacji., Ale kiedy przykład, rzuca NullPointerException
. NullPointerException jest niezaznaczonym wyjątkiem w Javie.
pamiętaj największą różnicą między wyjątkami zaznaczonymi i niezaznaczonymi jest to, że wyjątki zaznaczone są wymuszane przez kompilator i używane do wskazywania wyjątkowych warunków, które są poza kontrolą programu (na przykład błędy we/wy), podczas gdy wyjątki niezaznaczone występują podczas wykonywania i używane do wskazywania błędów programowania (na przykład wskaźnik null).,
najlepsze praktyki obsługi wyjątków w Javie
- sprawdzone wyjątki mogą być używane, gdy metoda nie może wykonywać tego, co mówi jej nazwa. np. metoda o nazwie prepareSystem (), która wstępnie wypełnia pliki konfiguracyjne i robi z nich jakąś konfigurację, może zadeklarować wyrzucenie
FileNotFoundException
co oznacza, że metoda używa plików konfiguracyjnych z systemu plików. - zaznaczone wyjątki najlepiej nigdy nie powinny być używane do błędów programowania, ale absolutnie powinny być używane do błędów zasobów i do kontroli przepływu w takich przypadkach.,
- wyrzuca tylko te wyjątki, których metoda nie może obsłużyć w żaden sposób. Metoda powinna najpierw spróbować obsłużyć go, gdy tylko napotka. Wyrzuć wyjątek tylko wtedy, gdy nie można obsługiwać metody wewnętrznej.
- dobrym sposobem definiowania podpisów metod jest zadeklarowanie WYJĄTKÓW zbliżonych do nazwy metody. Jeśli twoja metoda ma nazwę
openFile
, to oczekuje się, że rzuciFileNotFoundException
?. Jeśli twoja metoda ma nazwęfindProvider
, to oczekuje się, że wyrzuciNoSuchProviderException
.,również tego typu wyjątki powinny być sprawdzane, ponieważ zmusza to rozmówcę do radzenia sobie z problemami, które są nieodłączne dla semantyki Twoich metod.
- reguła polega na tym, że jeśli można racjonalnie oczekiwać, że klient wyzdrowieje z wyjątku, należy uczynić go wyjątkiem sprawdzonym. Jeśli klient nie może zrobić nic, aby odzyskać wyjątek, ustaw go jako wyjątek niezaznaczony.
w rzeczywistości większość aplikacji będzie musiała odzyskać prawie wszystkie wyjątki, w tym
NullPointerException
,IllegalArgumentExceptions
I wiele innych niezaznaczonych WYJĄTKÓW., Akcja / transakcja, która się nie powiodła, zostanie przerwana, ale aplikacja musi pozostać żywa i być gotowa do obsługi następnej akcji / transakcji.wyłączanie aplikacji jest zwykle legalne tylko podczas uruchamiania. Na przykład, jeśli brakuje pliku konfiguracyjnego i aplikacja nie może zrobić bez niego niczego sensownego, wtedy jest legalne wyłączenie aplikacji.,
podsumowanie
w tym poście dowiedzieliśmy się, jaka jest różnica między zaznaczonymi a niezaznaczonymi wyjątkami w Javie, a także jak obsługiwać niezaznaczone wyjątki, hierarchia WYJĄTKÓW w Javie z przykładami.
Zapraszam do zamieszczania pytań w komentarzach.
Happy Learning !!,
- Asynchronous and synchronous exceptions
- exception handling using inner classes
- exception handling best practices
- effectively handle NullPointerException
- Custom exceptions in Java
- Java exception doc
Leave a Reply