610 Shares 5931 views

Java: Wyjątki i ich obsługa

Każdy program będzie działał stabilnie tylko jeśli kod źródłowy jest pozbawione błędów, a nie istnieją warunki, które mogą powodować nieprzewidziane sytuacje. Proces wzrok ewentualnych uszkodzeń jest przeprowadzana na etapie programowania. Aby to zrobić, deweloper bierze pod uwagę wszystkie oczekiwane rezultaty i próbuje ograniczyć wpływ błędu tak, że nie może kolidować z działaniem programu, lub doprowadzić do jego upadku.


Kiedy może zajść potrzeba obsługi wyjątków

W Javie, wyjątek może być spowodowane nieprawidłowym danych wprowadzonych przez użytkownika, nie ma potrzeby zasobu lub nagłego odłączenia programu sieciowego. Dla wygody użytkowania utworzonego przez autora aplikacji, należy kontrolować występowanie sytuacji awaryjnych. Konsument nie powinien czekać, aby zamknąć aplikację, utratę danych wskutek nieobsługiwany wyjątek, czy tylko część pojawi się komunikat informujący, że coś poszło nie tak.

Obsługa wyjątków Javy

Co brać pod uwagę? Język Java posiada własną funkcjonalność wbudowany obsługi wyjątków. Oczywiście, duży odsetek błędów jest złapany przez inną etapie kompilacji, system automatycznie powiadomi, że stosowanie nie jest już możliwe. Ale nie ma tego rodzaju wyjątek, który występuje w czasie wykonywania. Deweloper powinien być w stanie przewidzieć to i zaprojektować kod tak, że nie spowoduje to błąd, i obchodzić go w sposób szczególny i przekazał kontrolę do innego oddziału.

W Javie, jest to narzucone przez kompilator złapać wyjątek, więc znane są typowe problemy i mają standardowe wzory ćwiczeń.

Typowe wyłączenia

Najprostszym przykładem, w którym można uzyskać wyjątek – ten podział. Pomimo swojej prostoty, w zakresie, jako rozdzielacz, może być równa zero, co spowoduje wystąpienie błędu. Dobrze, jeśli jest to możliwe do przewidzenia powstawanie przeszłości i zapobiec. Ale opcja ta nie zawsze jest dostępny, więc złapanie wyjątku powinny być organizowane bezpośrednio w przypadku „dzielenie przez zero”.

Mechanizm Java przechwycić błąd przetwarzania wygląda następująco:

  • tworzy się sterta Przedmiotem wyjątkiem, jak również wszelkie inne;
  • Naturalny przebieg programu zostanie przerwane;
  • mechanizm wykluczenia próbuje znaleźć alternatywną drogę do dalszego kodu;
  • Znaleźć bezpieczne wykonywanie programu w procesorze, pracy lub przywrócone, albo nastąpi realizacja wyjątku w sposób szczególny.

Najprostszym przykładem tworzenia błąd może wyglądać następująco:

if (null ==)

wyrzucić nowy NullPointerException ();

Tutaj, zmienna a jest sprawdzana przy inicjalizacji, czyli nie jest to, czy odniesienia do obiektu null. Jeśli ta sytuacja powstała i potrzebują specjalnego traktowania, jest wyjątek przez throw new NullPointerException ().

Kilka szczegółów na temat słów kluczowych

Gdy mamy do czynienia z wyjątków jest często niezbędne do korzystania z Java słów kluczowych, aby odnieść się do konkretnego działania. Ten język programowania ich pięć:

  • Spróbować. Ten parametr jest już spełniony, i oznacza to przejście do części kodu, który może wyrzucić wyjątek. Blokowe ograniczone szelki {}.
  • Haczyk. Przechwytuje pożądany typ wyjątku i obsługiwać go w odpowiedni sposób.
  • Wreszcie. Ten parametr jest opcjonalny i służy do wykonywania pewien fragment kodu, który jest wymagany w każdym razie, nawet jeśli żaden wyjątek nie zostanie złapany. Dodano bezpośrednio po bloku try.
  • Rzucać – pozwala tworzyć wyjątki Java z dowolnego miejsca.
  • Zgłasza – słowo kluczowe, które jest umieszczone w sygnaturze metody. Oznacza to, że następujący kod może rzucić wyjątek tego typu Java. Znak ten służy jako sygnał dla deweloperów, które należy mieć na uwadze – metoda może nie działać zgodnie z oczekiwaniami od niego.

Łowienie z try

Release wyjątków Java, naturalnie zakłada, że będzie to traktowane w sposób szczególny. Najwygodniejszym sposobem, aby to zrobić, jeśli sekcja kodu jest odgrodzony w bloku. Które mogą zawierać wyjątek. Po uruchomieniu tego kodu, maszyna wirtualna znajdzie nieoczekiwaną sytuację, zrozumieć, że nie jest krytyczna blok i przekazuje sterowanie do stacji z przetwarzaniem.

Kod Java jest owinięta w specjalnym bloku try, w ramach którego mogą być wyjątkiem. Tak więc, położył kilka nieprzewidzianych sytuacji, które zostaną złowione w tym samym miejscu, a nie kodu raspolzayas.

Najbardziej typowy kod do jednostki przetwarzania jest następująca:

try {

// Oto kod, który może generować wyjątek

} Chwytające (Tip_isklyucheniya_1 identifikator_1) {

// Tu jest obsługę wyjątków, w zależności od jego rodzaju i warunkach;

} Chwytające (Tip_isklyucheniya_2 identifikator_2) {

// Tu jest obsługę wyjątków, w zależności od jego rodzaju i warunkach;

}

catch kluczowe informuje, że kod, a następnie zeskanować wyjątek, który ma być leczony, jak opisano poniżej, pod warunkiem że jest ona zgodna z jego typu. Identyfikator może być stosowany w przetwarzaniu bloku kodu jako argumenty.

wreszcie

Gdy stało się jasne z poprzedniego rozdziału, bloki catch złapać wyjątki i przetwarzać je. Ale bardzo często sytuacja powstaje wówczas, gdy należy uruchamiać niektóre kodu, niezależnie od tego, czy zostały one złowione błędy. Do tego nie jest kluczowe w końcu. Jest on stosowany w celu zwiększenia wartości poszczególnych liczników, zamykając pliki lub połączeń sieciowych.

Wykres ten przedstawia kilka bloków catch wynalazł metody połowu wyjątki. Na przykład, kod zawarty w try generuje nieoczekiwaną sytuację taką jak zimno. Następnie, konsola zostanie wyświetlony wyraz «przeziębił!» A «Czy to coś dopingować o?». Oznacza to, że w końcu blok jest wykonywany w każdym przypadku.

W rzeczywistości, sposobem na uniknięcie wyzwalanie wreszcie. Jest to związane z zakończeniem w maszynie wirtualnej. Znaleźć sposób na jego realizację, jest możliwe przez internet otwartych przestrzeniach.

rzut kluczowe

Rzut powoduje wyjątek. Jego składnia jest następująca:

wyrzucić nowy NewException ();

Jest tworzony jest nowy wyjątek typu NewException (). Jako typ może być stosowany jest już uwzględniony w standardowych bibliotek klas Java i uprzednio zdefiniowane przez autora własnej produkcji.

Ten projekt jest częścią opisu każdej metody, która następnie wywołanie powinno nastąpić w bloku try, aby móc je przechwycić.

Hasło rzuca

Co zrobić, jeśli w procesie rozwoju sytuacji, gdy metoda może rzucić wyjątek, ale nie są w stanie poprawnie obsłużyć. W tym celu, w podpisie metoda określa słowo rzuca i rodzaj ewentualnych wyjątków.

Etykieta ta jest rodzajem wskaźnika dla programistów klienckich, że metoda nie jest w stanie obsłużyć ich sam wyjątek. Ponadto, jeśli jest zaznaczone rodzaj błędu, wówczas kompilator zmusi wyraźnie o to poprosi.

Spróbuj do zasobów

Java wersja 7 deweloperzy obejmowały znaczącą innowację jako leczenie bloku try z zasobów.

Wiele obiektów są tworzone w Javie, po użyciu powinien być zamknięty, aby oszczędzać zasoby. Wcześniej trzeba było wziąć to pod uwagę i ręcznie zatrzymać tych wystąpień. Teraz jednak wydawały AutoClosable interfejs. Pomaga automatycznie zamknąć już używanych obiektów umieszczonych w bloku try. Dzięki takiemu podejściu stało się bardziej wygodne do pisania kodu w jego czytelność jest znacznie zwiększona.

Klasy własne wyjątki Java

Twórcy opisywanej języka programowania wziął pod uwagę wiele aspektów typów konstrukcyjnych katastrofy. Jednak wszystkie opcje, aby zapobiec wyniku zdarzenia nie będzie działać, więc w Java realizowane możliwość definiowania własnych wyjątków, jest dostosowana do potrzeb danego kodu.

Najprostszym sposobem utworzenia – do dziedziczenia z najbardziej odpowiednie do kontekstu obiektu.

Nie stało się dziedziczyć wyjątku, klasę, która jest używana do definiowania własnych wyjątków. W MyException ma dwa konstruktory – domyślny, drugi – z argumentem typu String msg.

Następnie w FullConstructors klasie publicznego realizowanego Metoda F, który zawiera podpis rzuca MyException. To słowo kluczowe oznacza, że f może rzucać jak wyjątku Java MyException. Ponadto w organizmie wytwarzane metodą tekstową wyjściowej informacji do samej konsoli i rzeczywistą MyException generacji, przez rzut.

Druga metoda jest nieco inny od pierwszego, że kiedy utworzyć wyjątek, to jest przekazywany parametr ciąg znaków, które zostaną odzwierciedlone w konsoli na wzrok. W głównym oczywiste jest, że f () i g () są umieszczane w kontroli try i catch kluczowe skonfigurowany do przechwytywania MyException. Wynikiem przetwarzania jest wyświetlany komunikat o błędzie do konsoli:

W ten sposób doszło do dodawania wyjątków Java, z własnej ręki.

wyjątki architektura

Podobnie jak w przypadku wszystkich obiektów w Javie, wyjątki są dziedziczone i mają strukturę hierarchiczną. Element główny wszystkich błędów rzucone w tym języku programowania jest klasa java.lang.Throwable. Dziedziczone z niego dwóch rodzajach – błędów i wyjątków.

Błąd – sygnalizuje błąd krytyczny i jest zaznaczone wyjątki Java. Przechwytywanie i przetwarzania tych danych w większości przypadków występuje w etapie projektowania i nie wymaga wprowadzania w końcowym kodu aplikacji.

Najpowszechniej stosowanym klasy do tworzenia i analizowania odstępstw jest wyjątek. Który z kolei jest podzielony na kilka oddziałów, w tym RuntimeException. Przez RuntimeException wykonywalne są wyjątki, czyli występujące w trakcie trwania programu. Wszystkie klasy pochodzące od niego są nieweryfikowalne.

Często zdarzają się wyjątki

W wyjątków Java, których lista została przedstawiona poniżej, są używane najczęściej, więc należy opisać każdy z nich w szczegółach:

  • ArithmeticException. Są to błędy związane z operacji arytmetycznych. Najbardziej oczywisty przykład – dzielenie przez zero.
  • ArrayIndexOutOfBoundsException – odwołanie do liczby elementów macierzy, która jest większa od sumy długości.
  • ArrayStoreException – próba przypisać nieodpowiedniego rodzaju elementu tablicy.
  • ClassCastException – próba doprowadzenia złego jednego typu na inny.
  • IllegalArgumentException – stosując niewłaściwy argument w wywołaniu metody.
  • NegativeArraySizeException – wyjątek podczas tworzenia tablicę ujemnej wielkości.
  • NullPointerException – nadużywanie referencji null.
  • NumberFormatException – występuje, gdy źle konwersja ciąg do liczby całkowitej.
  • UnsupportedOperationException – operacja nie jest obsługiwana.

Te przykłady przedstawiają rodzaje niesprawdzonych wyjątków Java. Ale tak wyglądają sprawdzić:

  • Nie znaleziono Class – ClassNotFoundException.
  • IllegalAcccessException – ograniczyć dostęp do tej klasy.
  • InterruptedException – Przerwanie przepływu.
  • NoSuchFieldException – nie ma wymagane.

Interpretacja wyjątków

Mówiąc o często spotykanych wyjątków należy zauważyć, że ich interpretacja w zakresie projektowania, może być postrzegana nieprawidłowo. Dalej jest krótka lista wyjaśniając bardziej szczegółowo, w których może być nieoczekiwany sytuacja.

NullPointerException. Pierwszy przypadek, gdy istnieje wyjątek, jest odwołanie się do odniesienia do obiektu, który jest równy null. Rozpościera się ona również do sposobów zera przykład klasy. NullPointerException mogą być wyrzucane w razie uzyskania takiej samej długości zerowej tablicy. Aby uniknąć takich sytuacji będzie okresowo sprawdzać miejsca na null.

ArrayIndexOutOfBoundsException. Każdy program nie może istnieć bez użycia tablic. W związku z tym często uciekają się do niej może generować i błędów. Wyjątek występuje wtedy, gdy deweloper próbuje uzyskać dostęp do elementu tablicy, która nie ma na liście indeksu. Na przykład, wymaganą wartość jest powyżej lub poniżej zerowej długości. Bardzo często jest to wynikiem faktu, że w tablicy rozpoczyna się z wynikiem zero.

odkrycia

Obsługa wyjątków Javy – potężne narzędzie do środowiska, co znacznie ułatwia pracę programisty i pozwala mu tworzyć czyste i pozbawione błędów kodu. Na jak płynne i stabilne funkcjonowanie aplikacji zależy od stanu i reputację dewelopera.

Oczywiście, w bardziej lub mniej prostych programów do śledzenia nienormalne sytuacje znacznie łatwiejsze. Ale w dużych zautomatyzowanych kompleksów dla kilkuset tysięcy linii jest możliwe tylko w wyniku długotrwałego testowania i debugowania.

Błędu wyjątków Java, z których powstają w niektórych zastosowaniach, niektóre firmy oferują nagrodę, gdy znajdą entuzjastów. Szczególnie ceniona przez tych, które powodują naruszenie polityki bezpieczeństwa oprogramowania.