Zalecane, 2019

Wybór Redakcji

Różnica między rzutem a rzutem w Javie

Rzut i rzuty są słowami kluczowymi używanymi przy obsłudze wyjątków. Słowo kluczowe throw jest używane do ręcznego przekazania instancji wyjątku utworzonego przez programistę do maszyny JVM. Słowo kluczowe throws użyte do przekazania odpowiedzialności za obsługę wyjątku wystąpiło w metodzie metoda wywołującego. Podstawowa różnica między rzutem a rzutem polega na tym, że słowo kluczowe throw używa obiektu wyjątku, natomiast słowo kluczowe throws używa nazwy klas wyjątków.

Wykres porównania

Podstawa porównaniarzucaćrzuca
PodstawowySłowo kluczowe throw przekazuje ręcznie utworzony obiekt wyjątku do JVM.Słowo kluczowe throws służy do delegowania odpowiedzialności za obsługę wyjątków do osoby wywołującej metodę.
Składniathrow Throwable-instance;return_type method_name (lista-parametrów) wyrzuca ExceptionClass_list
{
// treść metody
}
Śledzony przezPo słowie kluczowym throw następuje obiekt wyjątku.Słowo kluczowe throws zawiera listę klas wyjątków, które mogą wystąpić w metodzie.
Liczba zgłoszonych wyjątkówSłowo kluczowe throw może rzucić pojedynczą instancję wyjątku.Słowo kluczowe throws może zadeklarować wiele klas wyjątków oddzielonych przecinkami.

Definicja rzutu

Słowo kluczowe " throw " jest używane do ręcznego przekazania utworzonej instancji wyjątku JVM (Java Virtual Machine). Jeśli "rzut" nie zostanie użyty do wyrzucenia wystąpienia wyjątku i wystąpi wyjątek, to system wykonawczy wewnętrznie zgłasza wystąpienie wyjątku do JVM, a program kończy się nienormalnie. Ogólna forma słowa kluczowego throw to:

 rzucać Throwable_instance; 

Powyżej Throwable_instance musi być obiektem klasy Throwable. Typy prymitywne, takie jak int, float lub char oraz instancja klasy non-throwable nie mogą być rzucane za pomocą słowa kluczowego throw.

Weźmy przykład, aby zrozumieć rzut słów kluczowych.

 Test klasy {Public static void main (String [] args) {wyrzuć nowy wyjątek ArithmeticException ("/ by zero"); }} 

W powyższym kodzie słowo kluczowe throw powoduje wystąpienie klasy Exception "ArithmeticException". Jeśli słowo kluczowe throw nie zostało wtedy użyte, metoda main () wewnętrznie utworzy obiekt wyjątku przekazany do maszyny JVM.

Punkty do zapamiętania na temat rzutu słów kluczowych:

  • Przekazuje ręcznie obiekt wyjątku do JVM.
  • Najlepiej używać go dla zdefiniowanych przez użytkownika wyjątków lub niestandardowych wyjątków.
  • Jeśli pamięć nie zostanie przydzielona do obiektu wyjątku wygenerowanego przez słowo kluczowe throw, wystąpi wyjątek środowiska wykonawczego o nazwie NullPointerException.
  • Słowo kluczowe throw zatrzymuje wykonywanie programu natychmiast po jego wystąpieniu. nie możemy bezpośrednio napisać żadnej instrukcji po instrukcji throw. Jeśli napiszemy dowolną stację bezpośrednio po instrukcji throw, kompilator pokaże komunikat błędu, nieosiągalny podczas kompilacji.
  • Tylko obiekty klasy Throwable mogą być rzucane za pomocą słowa kluczowego throw. Jeśli obiekt rzucony nie jest obiektem klasy Throw, wówczas otrzymujemy błąd czasu kompilacji "Znaleziono niezgodny typ. . wymagane java.lang.Throwable "

Uwaga:

Słowo kluczowe throw jest używane w C ++, JAVA, C #, aby ręcznie wygenerować wyjątek.

Definicja rzutów

Słowo kluczowe " throws " służy do delegowania odpowiedzialności za obsługę wyjątku występującego w metodzie, do jego metody wywołującej. Metoda wywołująca jest odpowiedzialna za obsługę wyjątku, może to być jakakolwiek inna metoda lub JVM. Deklaruje listę klas wyjątków, które mogą wystąpić w metodzie.

Użycie słowa kluczowego throws przekonuje kompilator, że wyjątek wystąpił w metodzie, jest obsługiwane przez metodę wywołującą, dlatego nie występuje błąd kompilacji. Ale metoda wywołująca musi obsłużyć wyjątek lub przekazać odpowiedzialność za obsługę wyjątku do jego metody hierarchii. Gdy wystąpi wyjątek środowiska wykonawczego, nawet po użyciu słowa kluczowego throws nie uniemożliwia to anormalnego zakończenia programu. Jeśli metoda wywołująca to main (), domyślna maszyna JVM obsługuje wyjątek.

Ogólna forma słowa kluczowego throws to:

 return_type nazwa_metody (lista-parametrów) wyrzuca wyjątekClass_list {// body of method} 

Widzimy, że słowa kluczowe throws pojawiają się po podpisie metody i mogą zawierać listę klas wyjątków, które mogą wystąpić w metodzie. Lista klas wyjątków napisanych po wyrzuceniu słowa kluczowego jest oddzielona przecinkiem.

Weźmy jeden przykład, aby zrozumieć słowo kluczowe throws.

 test calss {public static void main (String [] args) rzuca InterruptedException {thread sleep (10000); }} 

W powyższym kodzie wątek główny jest od dawna spakowany za pomocą metody sleep (). Teraz, gdy główna metoda jest w stanie uśpienia, możliwe jest, że inne wątki mogą przerwać główny wątek. Ale słowo kluczowe throws jest używane po sygnaturze metody main (), więc program mógłby się łatwo skompilować. Słowo kluczowe throws deklaruje sprawdzoną klasę wyjątków InterruptedException. Teraz, jeśli jakikolwiek inny wątek przerywa główny wątek podczas działania, słowo kluczowe throws przekazywałoby ten wyjątek do wywołującego metody main (), czyli JVM. JVM zakończy program nienormalnie.

Punkty do zapamiętania na temat wyrzucania słowa kluczowego:

  • Słowo kluczowe throws służy tylko do deklarowania sprawdzonych klas wyjątków. Użycie słowa kluczowego throws dla niezaznaczonego wyjątku nie ma wpływu.
  • Jeśli metoda nie chce samodzielnie obsłużyć wyjątku, deleguje ten wyjątek do metody wywołującej tej klasy za pomocą słowa kluczowego throws.
  • Jego użycie pozwala tylko na płynną kompilację programu.
  • Jeśli w środowisku wykonawczym wystąpi wyjątek, program kończy się nienormalnie, nawet po użyciu słowa kluczowego throws.
  • Zaleca się użycie bloku try / catch dla normalnego zakończenia programu, jeśli wystąpi wyjątek w czasie wykonywania.

Uwaga:

Wyrzucane słowa kluczowe używane tylko w Javie. C ++ i C # nie używają słowa kluczowego throws.

Kluczowe różnice między rzutem a rzutem

  1. Słowo kluczowe throw, ręcznie przekazuje odpowiedzialność za obsługę wyjątków do maszyny JVM, natomiast słowo kluczowe throws przekazuje odpowiedzialność za obsługę wyjątków do metody wywołującej kod, w której wystąpił wyjątek.
  2. Po słowie kluczowym throw następuje obiekt wyjątku, który przekazuje do JVM. Z drugiej strony, po słowach wyrzucających następują klasy wyjątków, które mogą wystąpić w metodzie.
  3. Słowo kluczowe throw może rzutować pojedynczy obiekt wyjątku naraz, podczas gdy słowo kluczowe throws może zadeklarować wiele klas wyjątków oddzielonych przecinkami naraz.

Wniosek:

Słowo kluczowe throw najlepiej jest stosować dla niestandardowego wyjątku. Blok try / catch jest najlepszy do obsługi wyjątków w porównaniu ze słowami kluczowymi throws.

Top