Najlepszy samouczek obsługa wyjątków Java W 2024 r. W tym samouczku możesz dowiedzieć się Wyjątek hierarchii klasa,Wbudowany w klasie wyjątku Java,anomalia,Złapać wyjątek,Wiele bloków catch,rzuca / rzut Słowa kluczowe:,wreszcie kluczowe,Zestawienie niestandardowych wyjątek,Ogólne wyjątek,
Wyjątkiem są niektóre błędy w programie, ale nie wszystkie błędy są wyjątki, a czasami można uniknąć pomyłki.
Na przykład, kod mniej średnik, to zabraknie wyników jest skłonić złego java.lang.Error; jeśli używać System.out.println (11/0), a następnie robisz, bo używasz dzielnik 0 będzie on wyrzucony wyjątek java.lang.ArithmeticException.
Istnieje wiele powodów, dla wystąpi wyjątek, zwykle zawiera następujące kategorie:
Te wyjątki albo z powodu błędu użytkownika spowodowana pewne błędy proceduralne spowodowane tym, że istnieją inne błędy fizyczne. -
Aby zrozumieć, obsługę wyjątków Java jest, jak to działa, trzeba mieć trzy następujące rodzaje wyjątków:
Wszystkie klasy wyjątków dziedziczą java.lang.Exception podklasy.
Klasa Wyjątkiem jest podklasą Throwable klasie. Ponadto do klasy Wyjątek Throwable jest podklasy błędu.
Programy Java zwykle nie złapać błąd. Błąd występuje zazwyczaj wtedy, gdy poważną wadę, są one widoczne na zewnątrz obróbki programu Java.
Środowisko uruchomieniowe Błąd używany do wskazania wystąpi błąd.
Na przykład, pamięć przepełnienie JVM. Ogólnie rzecz biorąc, program nie wyjść z błędu.
Klasa wyjątku ma dwa główne podkategorie: Klasa IOException i klasa RuntimeException.
Wbudowany w klasie Java (następny zostanie wyjaśnione), ma większość zwykłych kontroli i niesprawdzony wyjątku.
Język Java definiuje kilka klas wyjątków w standardowym opakowaniu java.lang.
Standardowe klasy wyjątków wykonawcze są podklasy najczęstszych klas wyjątków. Ponieważ pakiet java.lang jest ładowany domyślnie do wszystkich programów w języku Java, więc większość z klas wyjątków Runtime dziedzicznych zaburzeń mogą być stosowane bezpośrednio.
Według różnych biblioteki klas Java definiuje również szereg innych wyjątków, poniższa tabela wymienia zaznaczone wyjątkiem Java.
nienormalny | opis |
---|---|
ArithmeticException | Gdy nienormalne warunki pracy, to jest wyjątek. Na przykład liczba całkowita "dzielenie przez zero" wrzucony instancję tej klasy. |
ArrayIndexOutOfBoundsException | Z nielegalnego dostępu do indeksu tablicy wyrzucane. Jeśli indeks jest ujemny lub większy niż lub równy rozmiar tablicy, indeks jest nielegalne indeksu. |
ArrayStoreException | Starając się zachować niewłaściwy typ obiektu do tablicy wyjątków rzucanych. |
ClassCastException | Podczas próby oddać obiekt nie jest instancją podklasy rzucona. |
IllegalArgumentException | Rzucony w celu wskazania, że metoda została przekazana nielegalne lub nieodpowiednie argument. |
IllegalMonitorStateException | Wrzucony do wskazania, że wątek próbował czekać na monitorze obiektu lub powiadomić inne obiekty czekają monitora wątek bez monitora określony. |
IllegalStateException | W przypadku nielegalnych lub nieodpowiednim momencie wywołania w celu wygenerowania sygnału. Innymi słowy, środowiska Java i aplikacja Java nie jest w odpowiednim stanie do żądanej operacji. |
IllegalThreadStateException | Temat nie jest w odpowiednim stanie, gdy Żądana operacja wymagała rzucona. |
IndexOutOfBoundsException | To wskazuje indeks sortowania (na przykład sortowania tablicy, ciąg lub wektor) wyrzucane poza zasięgiem. |
NegativeArraySizeException | Jeśli aplikacja próbuje utworzyć tablicę z ujemnej wielkości, rzucona. |
NullPointerException | Gdy aplikacja próbuje użyć obiektu w potrzebie lokalnej null po rzuceniu |
NumberFormatException | Gdy aplikacja próbuje przekonwertować ciąg do typu liczbowego, ale że ciąg nie mogą być konwertowane do odpowiedniego formatu, aplikował anomalię. |
SecurityException | Przez kierownika bezpieczeństwa zgłasza wyjątek, oznacza naruszenie bezpieczeństwa. |
StringIndexOutOfBoundsException | Wyjątkiem od tego String wyrzuca metody wskazuje, że wskaźnik jest ujemna albo większa niż rozmiar łańcucha. |
UnsupportedOperationException | Gdy żądana operacja nie jest obsługiwana rzucona. |
Poniższa tabela zawiera Java zdefiniowane w pakiecie java.lang sprawdzone klasy wyjątków.
nienormalny | opis |
---|---|
ClassNotFoundException | Aplikacja próbuje załadować klasę, nie można znaleźć odpowiedniej klasy rzucona. |
CloneNotSupportedException | Po wywołaniu Object klasy clone metodę sklonować obiekt, ale klasa obiektu nie może realizować Cloneable interfejs rzucona. |
IllegalAccessException | Gdy odmówiono dostępu do klasy rzucona. |
InstantiationException | Gdy spróbujesz użyć Class klasy newInstance utworzyć instancję metody klasy, wyznaczonego obiektu klasy, ponieważ jest to interfejs lub klasa abstrakcyjna nie może być instancja, aplikował anomalię. |
InterruptedException | Wątek zostaje przerwany przez inny wątek, to jest wyjątek. |
NoSuchFieldException | Zmienna o nie istnieje |
NoSuchMethodException | Metoda wniosek nie istnieje |
Poniższa lista jest główną metodą Throwable klasy:
Nie. | Sposób i opis |
---|---|
1 | public String getMessage () Zwraca szczegółowe informacje na temat wystąpienia wyjątku. Wieść zainicjowany w konstruktorze klasy Throwable. |
2 | publicznych Throwable getCause () Zwraca obiekt, który reprezentuje Throwable powód wyjątku. |
3 | public String toString () Wyniki uzyskane przy zastosowaniu GetMessage () zwraca nazwę klasy Cascade. |
4 | public void printStackTrace () Drukuj toString () wynik i poziom stosu do System.err, czyli strumienia wyjściowego błędu. |
5 | publicznego StackTraceElement [] getStackTrace () Zwraca tablicę zawierającą poziom stosu. 0 indeks elementu reprezentuje wierzchołek stosu, ostatni element stanowi metodę połączenia stosu spód stosu. |
6 | publicznych Throwable fillInStackTrace () Obiekt Throwable stosu jest wypełniona obecnym poziomie poziomie stosu wywołań, dodany do poziomu stosu jakiejkolwiek wcześniejszej informacji. |
Korzystanie spróbować i złapać słów kluczowych może złapać wyjątek. try / catch bloku w miejsce wyjątków, które mogą się pojawić.
Składnia Kod try / catch nazywany jest kod ochrony za pomocą try / catch jest w następujący sposób:
try { // 程序代码 }catch(ExceptionName e1) { //Catch 块 }
catch zawiera wyjątek, aby uchwycić rodzaj rachunku. Kiedy blok kodu ochrony, gdy wystąpi wyjątek, spróbuj z tyłu bloku catch będą sprawdzane.
Jeśli wyjątek zawarty w bloku catch, wyjątek zostanie przekazany do bloku catch, i przekazać parametr do tej metody jest taka sama.
Poniższy przykład ogłosił tablicę dwóch elementów, gdy kod próbuje uzyskać dostęp trzeci element tablicy, gdy będzie to wyjątek.
// 文件名 : ExcepTest.java import java.io.*; public class ExcepTest{ public static void main(String args[]){ try{ int a[] = new int[2]; System.out.println("Access element three :" + a[3]); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("Exception thrown :" + e); } System.out.println("Out of the block"); } }
Powyższy kod skompilować i uruchomić następujący wynik:
Exception thrown :java.lang.ArrayIndexOutOfBoundsException: 3 Out of the block
Wiele bloków kodu połowu po bloku kodu nazywa się próbować podążać wielokrotnego przechwytywania.
Stwardnienie Składnia blok catch jest w następujący sposób:
try{ // 程序代码 }catch(异常类型1 异常的变量名1){ // 程序代码 }catch(异常类型2 异常的变量名2){ // 程序代码 }catch(异常类型2 异常的变量名2){ // 程序代码 }
Powyższy kod fragment składa się z trzech bloków catch.
Możesz dodać dowolną ilość bloków catch za instrukcji try.
Jeśli wystąpi wyjątek w kodzie ochrony, jest wyjątek do pierwszego bloku catch.
Jeśli rzucisz typ danych niedopasowania wyjątku ExceptionType1, gdzie zostanie on przechwycony.
Jeśli nie, zostaje ona przeniesiona do drugiego bloku zatrzaskowej.
Więc dopóki wyjątek zostanie złapany przez każdego połowu lub bloku.
Ten przykład pokazuje, jak za pomocą wielokrotnego try / catch.
try { file = new FileInputStream(fileName); x = (byte) file.read(); }catch(IOException i) { i.printStackTrace(); return -1; }catch(FileNotFoundException f) //Not valid! { f.printStackTrace(); return -1; }
Jeśli metoda nie uchwycić sprawdzonej wyjątek, wówczas metoda musi użyć słowa kluczowego wyrzuca do stwierdzenia. generuje słowo kluczowe umieszczony na końcu podpisu metody.
Można również użyć rzut kluczowe wyjątek, czy jest on nowy czy nowo instancja niewoli.
Poniższa deklaracja metoda zgłasza wyjątek RemoteException:
import java.io.*; public class className { public void deposit(double amount) throws RemoteException { // Method implementation throw new RemoteException(); } //Remainder of class definition }
Metoda może być uznana rzucić kilka wyjątków, rozdzielając je przecinkami między wieloma wyjątkami.
Na przykład, następujące oświadczenie metoda rzuca RemoteException i InsufficientFundsException:
import java.io.*; public class className { public void withdraw(double amount) throws RemoteException, InsufficientFundsException { // Method implementation } //Remainder of class definition }
Wreszcie słowo kluczowe jest używane do tworzenia bloków kodu po bloku kod usiłuje wykonać.
Czy wystąpi wyjątek wreszcie Kod blok kodu zawsze będzie wykonywany.
Na końcu bloku, można uruchomić oczyścić następstw o charakterze typu zakończenia komunikatu.
W końcu pojawia się blok w bloku catch Wreszcie, składnia jest następująca:
try{ // 程序代码 }catch(异常类型1 异常的变量名1){ // 程序代码 }catch(异常类型2 异常的变量名2){ // 程序代码 }finally{ // 程序代码 }
public class ExcepTest{ public static void main(String args[]){ int a[] = new int[2]; try{ System.out.println("Access element three :" + a[3]); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("Exception thrown :" + e); } finally{ a[0] = 6; System.out.println("First element value: " +a[0]); System.out.println("The finally statement is executed"); } } }
Powyższe przykłady zebrane wyniki przedstawiają się następująco:
Exception thrown :java.lang.ArrayIndexOutOfBoundsException: 3 First element value: 6 The finally statement is executed
Należy zauważyć, że w następujących sprawach:
W Javie można dostosować wyjątek. Poniższe punkty muszą pamiętać, aby napisać swoje własne klasy wyjątków.
Można zdefiniować własną klasę wyjątku tak:
class MyException extends Exception{ }
Tylko dziedziczą klasy Exception tworzenia klasy wyjątków są sprawdzane klasy wyjątków.
Poniższa klasa InsufficientFundsException jest klasa wyjątek zdefiniowany przez użytkownika, która dziedziczy z Exception.
Klasa wyjątku oraz wszelkie inne zajęcia, zawiera zmienne i metody.
// 文件名InsufficientFundsException.java import java.io.*; public class InsufficientFundsException extends Exception { private double amount; public InsufficientFundsException(double amount) { this.amount = amount; } public double getAmount() { return amount; } }
Aby pokazać, jak korzystać z naszej niestandardową klasę wyjątku,
W poniższym klasy CheckingAccount zawiera metoda wycofać () generuje InsufficientFundsException wyjątku.
// 文件名称 CheckingAccount.java import java.io.*; public class CheckingAccount { private double balance; private int number; public CheckingAccount(int number) { this.number = number; } public void deposit(double amount) { balance += amount; } public void withdraw(double amount) throws InsufficientFundsException { if(amount <= balance) { balance -= amount; } else { double needs = amount - balance; throw new InsufficientFundsException(needs); } } public double getBalance() { return balance; } public int getNumber() { return number; } }
Poniższy program pokazuje, jak zadzwonić depozyt klasy BankDemo CheckingAccount () i wycofania metody ().
//文件名称 BankDemo.java public class BankDemo { public static void main(String [] args) { CheckingAccount c = new CheckingAccount(101); System.out.println("Depositing $500pl."); c.deposit(500.00); try { System.out.println("\nWithdrawing $100pl."); c.withdraw(100.00); System.out.println("\nWithdrawing $600pl."); c.withdraw(600.00); }catch(InsufficientFundsException e) { System.out.println("Sorry, but you are short $" + e.getAmount()); e.printStackTrace(); } } }
Kompilowania powyższe trzy pliki i uruchom BankDemo programu, uzyskać wyniki w następujący sposób:
Depositing $500pl. Withdrawing $100pl. Withdrawing $600pl. Sorry, but you are short $200.0 InsufficientFundsException at CheckingAccount.withdraw(CheckingAccount.java:25) at BankDemo.main(BankDemo.java:13)
To definiuje dwa rodzaje wyjątków i błędów w Javie.