java exceptions exception handling with examples
Ten samouczek wideo dotyczący wyjątków w języku Java zawiera wyjaśnienia dotyczące obsługi wyjątków w języku Java. Dowiesz się o hierarchii wyjątków, typach, metodach klas i nie tylko:
Kiedy wykonujemy programy w języku Java, normalne zachowanie lub normalny przepływ programu zostaje przerwany z powodu nieoczekiwanych zdarzeń.
Na przykład, otwieramy plik do odczytu danych. Po wykonaniu wywołania Open file okazuje się, że brakuje pliku, który próbujemy otworzyć. Powoduje to przerwanie normalnego przebiegu programu.
To zdarzenie, które wpływa na normalny przebieg programu lub go przerywa, nazywane jest „ Wyjątek ”.
=> Odwiedź tutaj, aby poznać serię szkoleń Java dla wszystkich.
Oto samouczek wideo dotyczący obsługi wyjątków Java:
Czego się nauczysz:
Obsługa wyjątków w Javie
Gdy w programie wystąpi wyjątek, wykonywanie programu jest przerywane. Ponieważ jest to nagłe zakończenie, system generuje komunikat i wyświetla go. Wiadomość generowana przez system może być tajemnicza jak niektóre kody lub nieczytelna.
W ten sposób zwykły użytkownik powinien zrozumieć, dlaczego program nagle zatrzymał swoje wykonywanie, powinien znać przyczynę. System wygenerował komunikaty w wyniku wyjątku mogą nie być pomocne. W Javie możemy obsłużyć wyjątek i dostarczyć użytkownikowi zrozumiałe komunikaty o problemie.
witryny do pobierania filmów z youtube
Ta obsługa wyjątku, powszechnie znana jako 'Obsługa wyjątków' jest jedną z najistotniejszych cech programowania w języku Java.
Przyczyny wystąpienia wyjątku
Możemy mieć różne przyczyny, dla których mogą wystąpić wyjątki. Jeśli jest to wyjątek związany z danymi wejściowymi, przyczyną może być to, że dane wejściowe są nieprawidłowe lub nieczytelne.
Jeśli otrzymamy wyjątek dla wejścia / wyjścia pliku, to jest całkiem możliwe, że pliki, z którymi mamy do czynienia, nie istnieją. W innym czasie mogą wystąpić błędy, takie jak problemy z siecią, niedostępność lub działanie drukarki itp.
W programie oprócz wyjątków otrzymujemy również błędy. Dlatego, aby skutecznie obsługiwać wyjątki, musimy zdawać sobie sprawę z różnic między błędem a wyjątkiem.
Błąd wskazuje na poważniejszy problem z aplikacją i aplikacja nie powinna próbować go przechwycić. Wręcz przeciwnie, wyjątek jest warunkiem, który będzie próbował złapać każdy rozsądny wniosek.
Tak więc błąd w aplikacji jest poważniejszy i aplikacje ulegały awarii, gdy napotkają błąd. Z drugiej strony wyjątki występują w kodzie i mogą być obsługiwane przez programistę poprzez zapewnienie działań naprawczych.
Co to jest obsługa wyjątków?
Obsługa wyjątków w Javie to mechanizm, za pomocą którego jest utrzymywany normalny przepływ aplikacji. Aby to zrobić, używamy potężnego mechanizmu do obsługi błędów w czasie wykonywania lub wyjątków w programie.
Sekwencja kodu używana do obsługi wyjątku jest nazywana „procedurą obsługi wyjątków”. Procedura obsługi wyjątków bada kontekst w momencie wystąpienia wyjątku. Oznacza to, że odczytuje wartości zmiennych, które znajdowały się w zakresie, gdy wystąpił wyjątek, a następnie przywraca program Java, aby mógł kontynuować normalny przepływ.
Korzyści z obsługi wyjątków
Główną zaletą obsługi wyjątków jest to, że utrzymuje normalny przepływ aplikacji pomimo wystąpienia wyjątku. W przypadku wystąpienia wyjątku program zwykle kończy się nagle.
Posiadanie programu obsługi wyjątków w programie nie spowoduje nagłego zakończenia programu. Zamiast tego procedura obsługi wyjątków zapewnia, że wszystkie instrukcje programu są wykonywane normalnie, a przepływ programu nie przerywa nagle.
Hierarchia wyjątków w Javie
Poniższy diagram przedstawia hierarchię wyjątków w Javie. Klasa java.lang.Throwable (potomek klasy Object) jest klasą główną wyjątku Java. Klasy Exception i Error pochodzą z tej klasy.
Klasa wyjątku jest klasą bazową dla wszystkich innych wyjątków.
Poniżej przedstawiono hierarchię klas Exception w Javie, która zawiera listę wszystkich głównych wyjątków, o których powinien wiedzieć programista Java.
Klasa wyjątków w Javie
Jak widać na diagramie hierarchii, klasa Throwable ma dwie bezpośrednie podklasy, tj. Exception i Error. Wyjątki wynikające ze źródła zewnętrznego są opisane w klasie Exception.
Klasa Exception deklaruje konstruktory jako takie same jak klasa Throwable, a wywołanie każdego konstruktora również wywołuje jego odpowiednik Throwable. Klasa wyjątku nie deklaruje swoich metod, dziedziczy metody klasy Throwable.
Konstruktory i metody używane przez klasę Exception są przedstawione poniżej.
Konstruktorzy
Budowniczy Opis publiczny wyjątek () Domyślny konstruktor, który konstruuje nowy wyjątek z komunikatem o wartości null. publiczny wyjątek (wiadomość tekstowa) Konstruktor do tworzenia nowego wyjątku z podaną wiadomością. W takim przypadku przyczyna nie jest inicjowana, a kolejne wywołanie funkcji Throwable.initCause (java.lang.Throwable) może zostać użyte do zainicjowania przyczyny. publiczny wyjątek (wiadomość tekstowa, przyczyna rzucana) Konstruuje nowy wyjątek na podstawie podanego komunikatu i przyczyny. publiczny wyjątek (przyczyna rzucana) Konstruuje nowy wyjątek z podaną przyczyną i komunikatem podanym przez (przyczyna == null? Null: przyczyna.toString ()) (który zazwyczaj zawiera klasę i szczegółowy komunikat o przyczynie). chroniony wyjątek (komunikat String, przyczyna Throwable, boolean enableSuppression, boolean writableStackTrace) Konstruuje nowy wyjątek z podanym komunikatem, przyczyną, pomijaniem (włączone lub wyłączone) i zapisywalnym śladem stosu (włączone lub wyłączone).
Metody
Prototyp metody | Opis |
---|---|
public String getMessage () | Uzyskaj szczegółową wiadomość o wystąpieniu wyjątku. |
public Throwable getCause () | Uzyskaj przyczynę wyjątku reprezentowanego przez obiekt do rzucania |
public String toString () | Łączy nazwę klasy z wynikiem getMessage () i zwraca wynikowy ciąg znaków. |
public void printStackTrace () | Wyświetla wynik metody toString () i zawartość śladu stosu w strumieniu wyjściowym błędu System.err. |
public StackTraceElement [] getStackTrace () | Pobierz każdy element ze śladu stosu w postaci tablicy. |
public Throwable fillInStackTrace () | Wypełnij ślad stosu bieżącym śladem stosu. |
Przykład wyjątku
Następnie przedstawiamy program Java, aby zademonstrować podstawowy przykład wyjątku. Tutaj podajemy zmienną łańcuchową zainicjowaną na wartość null. Kiedy próbujemy wydrukować tę zmienną, zgłaszany jest wyjątek, ponieważ wartość String nie może mieć wartości null.
class Main { public static void main(String args[]){ //declare a String variable and initialize it to null String myStr = null; //print the string System.out.println(myStr.length()); } }
Wynik
Rodzaje wyjątków w Javie
Java obsługuje trzy typy wyjątków:
- Sprawdzony wyjątek
- Niezaznaczony wyjątek
- Błąd
W tej sekcji omówimy wszystkie powyższe trzy typy.
# 1) Sprawdzony wyjątek
Niektóre wyjątki są sprawdzane w czasie kompilacji, gdy kod jest kompilowany. To są „zaznaczone wyjątki”. Program Java zgłasza błąd kompilacji, gdy stwierdzi, że kod wewnątrz programu jest podatny na błędy.
Możemy zająć się błędami kompilacji zgłaszanymi przez sprawdzany wyjątek, obsługując wyjątki przez umieszczenie kodu w bloku try-catch lub użycie słowa kluczowego throws.
W hierarchii wyjątków klasy bezpośrednio dziedziczące klasy Throwable, takie jak IOException, ClassNotFoundException itp., Są sprawdzane jako wyjątki z wyjątkiem klas RuntimeException i Error. To są niezaznaczone wyjątki.
Poniższy program Java demonstruje Checked Exceptions, FileNotFoundException i IOException. W tym programie staramy się otworzyć nieistniejący plik i odczytać z niego.
Ponieważ plik nie istnieje, metoda otwartego pliku zgłasza wyjątek FileNotFoundException. Następnie, gdy próbujemy odczytać zawartość pliku i zamknąć plik, wywołania metod rzucają IOException.
import java.io.*; class Main { public static void main(String args[]) { FileInputStream fis = null; //Open a file fis = new FileInputStream('C:/myfile.txt'); int k; //read contents of the file while(( k = fis.read() ) != -1) { System.out.print((char)k); } //close the file fis.close(); } }
Wynik
W powyższym wyjściu, ponieważ nie ma obsługi wyjątków, otrzymujemy błędy kompilacji dla sprawdzonych wyjątków.
Podajmy teraz klauzulę throws dla tego programu. Ponieważ elementem nadrzędnym FileNotFoundException jest IOException, po prostu określimy IOException po klauzuli throws.
import java.io.*; class Main { public static void main(String args[]) throws IOException { FileInputStream fis = null; //Open a file fis = new FileInputStream('C:/myfile.txt'); int k; //read contents of the file while(( k = fis.read() ) != -1) { System.out.print((char)k); } //close the file fis.close(); } }
Wynik
Jak widać z danych wyjściowych, kiedy obsługujemy wyjątek, zapewnia on bardziej znaczące dane wyjściowe zamiast błędów kompilacji.
# 2) Niezaznaczony wyjątek
Niezaznaczone wyjątki to wyjątki, które są sprawdzane w czasie wykonywania. Dlatego pomimo wyjątków kompilacja programów zakończy się sukcesem. Większość niezaznaczonych wyjątków jest generowanych z powodu złych danych używanych w programie.
Klasy, które dziedziczą „RuntimeException”, są niezaznaczonymi wyjątkami. Wyjątki, takie jak ArrayIndexOutofBounds Exception, ArithmeticException, NullPOinterException itp. Są przykładami niezaznaczonych wyjątków.
Poniższy program demonstruje wyjątek niezaznaczony w czasie wykonywania, który jest spowodowany podzieleniem liczby przez zero.
class Main { public static void main(String args[]) { int num1=10; int num2=0; //divide both numbers and print the result int result=num1/num2; System.out.println(result); } }
Wynik
Widzimy, że program został pomyślnie skompilowany, a następnie ArithmeticException jest generowany w czasie wykonywania.
Przykłady niezaznaczonych wyjątków:
- ArrayIndexOutOfBoundsException
- NullPointerException
- IllegalArgumentException
- NumberFormatException
Oprócz powyższych dwóch wyjątków istnieje kilka innych sprawdzonych wyjątków, w tym:
- SQLException
- InvocationTargetExecption
# 3) Błąd
Błąd jest zwykle nieodwracalną i nieodwracalną sytuacją w programie, a gdy wystąpi błąd, programy ulegają awarii. Niektóre przykłady błędów w programie to OutOfMemoryError, AssertionError i VirtualMachineError itp.
Klasa Error dziedziczy po klasie Throwable. Błąd opisuje sytuację, której nie można obsłużyć i która powoduje awarię programu.
Omówmy błąd OutOfMemory w tej sekcji jako przykład błędu.
Wiemy, że wszystkie obiekty w Javie są przydzielane za pomocą operatora new i są przechowywane na stercie. Gdy w stercie zabraknie pamięci, wirtualna maszyna języka Java (JVM) nie może przydzielić obiektu. Jednocześnie moduł odśmiecania pamięci nie może zwolnić żadnej pamięci. Ta sytuacja powoduje błąd OutOfMemory.
OutOfMemoryError w Javie będzie wyglądać tak, jak pokazano poniżej:
'exception in thread 'main' java.lang.outofmemoryerror: java heap space'
Obecność OutOfMemoryError w programie oznacza, że przetwarzanych jest zbyt dużo danych lub obiekty są przetrzymywane przez zbyt długi czas. Czasami może to być również biblioteka innej firmy, która zużywa pamięć.
Przyczyny błędu OutOfMemoryError
# 1) Przestrzeń sterty Java
Jeśli aplikacja ma zbyt wiele finalizatorów, obiekty klasy mające metodę Finalize nie są natychmiast odzyskiwane przez moduł odśmiecania pamięci, ale są umieszczane w kolejce do finalizacji w późniejszym czasie. Czasami finalizacja nie nadąża za czasem, a pamięć sterty zostaje zapełniona, co powoduje błąd OutOfMemoryError.
Innym powodem wystąpienia OutOfMemoryError jest to, że podana wielkość sterty może być niewystarczająca dla aplikacji.
Poniższy kod ilustruje błąd OutOfMemoryError, który może wystąpić z powodu dużej wielkości danych zadeklarowanej dla tablicy.
import java.util.*; public class Main { static List list = new ArrayList(); public static void main(String args[]) throws Exception { Integer[] array = new Integer[100000 * 100000]; } }
Wynik
# 2) Permgen Space
Stały obszar generacji w pamięci może również zostać wyczerpany i może generować błąd OutOfMemory.
Rozmiar regionu PermGen jest ustawiany podczas uruchamiania maszyny JVM. Jeśli użytkownik nie ustawi rozmiaru, zostanie użyty rozmiar domyślny, który jest specyficzny dla platformy.
Chociaż powyższe dwie są zwykle głównymi przyczynami wystąpienia OutOfMemoryError, mogą istnieć inne przyczyny, takie jak rozmiar tablicy przekraczający limit maszyny wirtualnej itp.
Lista wyjątków w Javie
Poniżej podano listę głównych wyjątków występujących w Javie. Przedstawiliśmy przykłady programowania dla niektórych z tych wyjątków. Należy pamiętać, że są to wbudowane wyjątki obsługiwane przez Javę.
# 1) ArithmeticException: Nieprawidłowości arytmetyczne, takie jak dzielenie przez zero, powodują wyjątek ArithmeticException.
Poniższy program demonstruje występowanie ArithmeticException.
class Main { public static void main(String args[]) { try { //define two numbers int num1 = 100, num2 = 0; int result = num1 / num2; // divide by zero //print the result System.out.println('Result = ' + result); } catch (ArithmeticException e) { System.out.println('ArithmeticException:Division by Zero'); } } }
Wynik
# 2) ArrayIndexOutOfBoundsException: ArrayIndexOutOfBoundsException jest generowany, gdy dostęp do elementu tablicy uzyskuje się przy użyciu niedozwolonego indeksu. Używany indeks wykracza poza rozmiar tablicy lub jest ujemny.
# 3) ClassNotFoundException: Jeśli definicja klasy nie zostanie znaleziona, zostanie zgłoszony wyjątek ClassNotFoundException.
# 4) FileNotFoundException: FileNotFoundException jest podawany, gdy plik nie istnieje lub nie można go otworzyć.
# 5) IOException: IOException jest generowany, gdy operacja wejścia-wyjścia nie powiedzie się lub zostanie przerwana.
# 6) InterruptedException: Za każdym razem, gdy wątek przetwarza, śpi lub czeka, jest przerywany przez zgłoszenie InterruptedException.
# 7) NoSuchFieldException: Jeśli klasa nie zawiera określonego pola lub zmiennej, zgłasza NoSuchFieldException.
# 8) NoSuchMethodException: Gdy metoda, do której uzyskiwany jest dostęp, nie zostanie znaleziona, zostanie zgłoszony NoSuchMethodException.
# 9) NullPointerException: NullPointerException jest zgłaszany w przypadku odwołania do obiektu o wartości null. To najważniejszy i najczęściej występujący wyjątek w Javie.
# 10) NumberFormatException: Ten wyjątek jest zgłaszany, gdy metoda nie może przekonwertować ciągu na format liczbowy.
# 11) Wyjątek RuntimeException: Każdy wyjątek występujący w czasie wykonywania to wyjątek RuntimeException.
# 12) Wyjątek StringIndexOutOfBoundsException: Wyjątek StringIndexOutOfBoundsException jest generowany przez klasę String i wskazuje, że indeks jest większy niż rozmiar obiektu String lub jest ujemny.
# 13) EOFException: EOFException jest częścią pakietu java.io i jest generowany, gdy osiągnięty zostanie koniec pliku i plik jest odczytywany.
# 14) IllegalArgumentException: IllegalArgumentException jest generowany, gdy do metody przekazywane są niedozwolone lub nieprawidłowe argumenty. Na przykład, nieprawidłowy format danych, wartość null, gdy wymagana jest wartość różna od null lub argumenty spoza zakresu.
Poniższy program w języku Java przedstawia wyjątek IllegalArgumentException.
public class Main { int m; public static void setMarks(int marks) public static void main(String[] args) { setMarks(45); setMarks(101); } }
Wynik
faza cyklu życia oprogramowania
W powyższym programie wyjątek IllegalArgumentException jest generowany w drugim wywołaniu funkcji setMarks, w której wpisujemy znaczniki spoza zakresu (> 45).
# 15) InputMismatchException: InputMismatchException jest generowany, gdy odczyt danych wejściowych nie pasuje do określonego wzorca. Na przykład, jeśli program oczekuje liczby całkowitej i odczytuje wartość zmiennoprzecinkową, zgłaszany jest wyjątek InputMismatchException.
# 16) NoSuchElementException: NoSuchElementException jest generowany, gdy następny element, do którego uzyskano dostęp, nie istnieje.
Na przykład, w Enumeration metoda nextElement () służy do uzyskiwania dostępu do następnego elementu w wyliczeniu. Jeśli element nie istnieje, zostanie zgłoszony NoSuchElementException. Głównie kolekcje Java zgłaszają ten wyjątek.
Pokazuje to poniższy program.
import java.util.*; public class Main { public static void main(String[] args) { Set hash_Set = new HashSet(); //create an empty hashSet. //This throws NoSuchElementException since hashSet is empty hash_Set.iterator().next(); } }
Wynik
# 17) ConcurrentModificationException: ConcurrentModificationException jest zwykle generowany przez klasy Collection. Ten wyjątek jest generowany, gdy obiekty próbują jednocześnie modyfikować zasób.
Na przykład, wątek nie może modyfikować kolekcji, gdy inny wątek uzyskuje do niej dostęp. Jeśli zezwolimy na dwa wątki, wtedy te dwa będą jednocześnie miały dostęp do kolekcji i wystąpią niespójności.
Poniższy przykład ilustruje ConcurrentModificationException.
import java.awt.List; import java.util.*; public class Main { public static void main(String[] args) { ArrayList A_list = new ArrayList<>(); //add elements to the ArrayList A_list.add(10); A_list.add(20); A_list.add(30); Iterator it = A_list.iterator(); while (it.hasNext()) { Integer value = it.next(); System.out.println('ArrayList Value:' + value); if (value.equals(30)) A_list.remove(value); } } }
Wynik
W powyższym programie podczas drukowania ArrayList staramy się jednocześnie usunąć element. To jest dostęp współbieżny i dlatego zgłaszany jest wyjątek.
Niestandardowe wyjątki w Javie
Do tej pory omówiliśmy wszystkie wyjątki, które są wbudowane lub dostarczane przez język Java. Oprócz tych wyjątków możemy również zdefiniować własne wyjątki. Są to nazywane wyjątkami niestandardowymi lub wyjątkami zdefiniowanymi przez użytkownika.
Korzystając z niestandardowych wyjątków, możemy zdefiniować nasze wyjątki zgodnie z naszymi potrzebami.
Poniższy przykład przedstawia wyjątek niestandardowy, który zdefiniowaliśmy dla wartości Integer.
//custom exception definition class InvalidValueException extends Exception{ InvalidValueException(String s){ super(s); } } class Main{ static void validate(int int_val)throws InvalidValueException{ if(int_val<10) //value is valid if> 10 else throw exception throw new InvalidValueException('Invalid value'); else System.out.println('This is valid integer'); } public static void main(String args[]){ try{ validate(9); }catch(Exception m){System.out.println('Exception occured: '+m);} System.out.println('Code after Exception'); } }
Wynik
Często Zadawane Pytania
P # 1) Co masz na myśli przez wyjątek?
Odpowiedź: Zdarzenie, które ma miejsce podczas wykonywania programu i zakłóca normalny przepływ programu, nazywane jest wyjątkiem. Wyjątek jest niepożądany i nieoczekiwany i może wystąpić z powodu czynników zewnętrznych lub błędów programistycznych.
P # 2) Jaka jest różnica między błędem a wyjątkiem?
Odpowiedź: Wyjątkami są zdarzenia, które zakłócają normalny przepływ programu. Możemy obsługiwać wyjątki w naszym programie i normalnie kontynuować program. Błąd to nieodwracalne zdarzenie, którego nie można obsłużyć i kończy działanie programu.
P # 3) Co masz na myśli mówiąc o obsłudze wyjątków?
Odpowiedź: Proces określania sekwencji kroków w programie do obsługi wyjątku nazywa się obsługą wyjątków. Zapewniając obsługę wyjątków w programie, możemy zapewnić normalny przepływ programu.
P # 4) Jakie są zalety obsługi wyjątków w Javie?
Odpowiedź: Korzystając z obsługi wyjątków, możemy utrzymać normalny przepływ wykonywania aplikacji. Możemy również propagować błędy w stosie wywołań, gdy zapewniamy obsługę wyjątków.
Pytanie nr 5) Jaki jest pożytek z obsługi wyjątków?
Odpowiedź: Brak przerywania normalnego przebiegu wykonywania aplikacji jest głównym zastosowaniem obsługi wyjątków w programie. Bez obsługi wyjątków program zakończy działanie, a normalny przepływ wykonywania zostanie przerwany w przypadku wystąpienia wyjątku.
Z wyjątkiem poprawnie obsłużonych w programie, może on kontynuować swoje normalne wykonywanie, nawet jeśli wystąpi wyjątek.
Więcej przykładów wyjątków
Wyjątkiem jest zdarzenie, które ma miejsce podczas działania programu i zakłóca jego wykonanie. Z tego powodu oprogramowanie kończy się nagle.
W przypadku wystąpienia tego wyjątku Java tworzy obiekt z komunikatem o błędzie i informacjami o klasie. To jest obiekt wyjątku.
Dlaczego potrzebujemy wyjątku w Javie?
Klasa ExcepDemo bez wyjątku:
public class ExcepDemo { public static void main(String[] args) { int i=5; int j=0; System.out.println(i/j); System.out.println('statement after division'); } }
WYNIK:
Klasa ExcepDemo z obsługą wyjątków:
public class ExcepDemo { public static void main(String[] args) { // TODO Auto-generated method stub int i=5; int j=0; try { System.out.println(i/j); } catch(ArithmeticException ae) { System.out.println('wrong input'); } System.out.println('statement after division'); } }
WYNIK:
Spróbuj, złap i ostatecznie zablokuj:
- Wyjątek jest obsługiwany przez blok try, catch.
- Instrukcje, które mogą prowadzić do wyjątków, są zapisywane wewnątrz bloku try.
- Gdy wystąpi wyjątek, instrukcje wewnątrz bloku catch zostaną wykonane. Jeśli wyjątek nie wystąpi, blok catch nie zostanie wykonany.
- Niezależnie od tego, czy wyjątek wystąpił lub nie wystąpił, ostatni blok zostanie wykonany.
Typy wyjątków
Niezaznaczony wyjątek:
Ponieważ niezaznaczonych wyjątków można uniknąć poprzez odpowiednie programowanie ( Na przykład. null pointer Exception, Arithmetic Exception) nie zostaną sprawdzone przez kompilator. Niezaznaczony wyjątek zostanie zgłoszony w czasie wykonywania.
Sprawdzony wyjątek:
- Zaznaczony wyjątek zostanie sprawdzony przez kompilator i jego obowiązkowe zgłoszenie lub obsłużenie wyjątku.
- Ten wyjątek służy do oddzielania kodu obsługi błędów od zwykłego kodu.
- Wszystkie zaznaczone wyjątki są pogrupowane i jest to przydatne w różnicowaniu problemów.
Przykład: java.io
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; public class DemoExpChecked { public static void main(String[] args) { try { File file=new File('input.txt'); BufferedReader br = new BufferedReader(new FileReader(file)) ; String content; while ((content=br.readLine())!=null) { System.out.println(content); } br.close(); } catch(IOException e) { e.printStackTrace(); } } }
Błędy
Błąd może wystąpić z powodu błędów logicznych programu lub pamięci związanej z problemem JVM.
Przykład: Błąd braku powiązania pamięci lub błąd przepełnienia stosu.
Rzut i rzuty
Słowo kluczowe „Throw” służy do zgłaszania wyjątku, natomiast słowo kluczowe „throws” służy do deklarowania wyjątku.
Rzuć przykładowy program:
public class Demothrow { String content ; public void driving(String c) { this.content=c; if (content.isEmpty()) { throw new NullPointerException('content is empty'); } else { System.out.println('content=='+content); } } public static void main(String[] args) { Demothrow dt=new Demothrow(); dt.driving(''); } }
Zgłasza przykładowy program:
Zgłoszenia służą do przekazywania informacji, że ta metoda zgłasza ten konkretny wyjątek. Kiedy wywołujesz tę konkretną metodę, musisz obsłużyć ten wyjątek.
public class DemoThrows { int i=2,j=0; public void checkmethod () throws ArithmeticException{ System.out.println(i/j); } public static void main(String[] args) { DemoThrows d =new DemoThrows(); try { d.checkmethod(); } catch (ArithmeticException ae) { ae.printStackTrace(); } } }
Najważniejsze punkty, na które należy zwrócić uwagę:
- Wyjątki to nietypowe zdarzenia, które wystąpiły podczas wykonywania programu i wpłyną na przepływ wykonywania.
- Błąd różni się od wyjątków. Przykład błędów: Brak pamięci.
- Zaznaczone wyjątki są sprawdzane podczas kompilacji i jest to obowiązkowe, aby zająć się tym zaznaczonym wyjątkiem.
- Niezaznaczony wyjątek występuje w czasie wykonywania.
Wniosek
W tym samouczku dotyczącym obsługi wyjątków w języku Java przedstawiono definicję wyjątków, obsługę wyjątków i hierarchię wyjątków w języku Java. Omówiliśmy również klasę wyjątków w Javie, która udostępnia różne konstruktory i metody dostępu do wyjątków.
Przeanalizowaliśmy listę typowych wyjątków występujących w Javie i zobaczyliśmy przykłady programowania dla głównego wyjątku. Omówiliśmy również główne błędy, które występują w programie Java, wraz z typami wyjątków i wyjątków niestandardowych.
=> Sprawdź WSZYSTKIE samouczki Java tutaj.
rekomendowane lektury
- 10 najlepszych wyjątków selenu i jak sobie z nimi radzić (dokładny kod)
- Obsługa wyjątków JDBC - jak obsługiwać wyjątki SQL
- Jak obsługiwać wyjątki w skryptach SoapUI Groovy - samouczek SoapUI nr 11
- Ciąg w języku Java z buforem ciągów i samouczek dotyczący tworzenia ciągów
- Wdrażanie Java: tworzenie i wykonywanie pliku Java JAR
- Wątki Java z metodami i cyklem życia
- Wirtualna maszyna Java: jak JVM pomaga w uruchamianiu aplikacji Java
- Modyfikatory dostępu w Javie - samouczek z przykładami