Jason. Cała informatyka w jednym miejscu!

Kolejny brakujący temat jaki miałem zanotowany to opisanie Tobie na czym polega jawne zgłaszanie wyjątku przy pomocy słowa "throw" w języku Java! Czas najwyższy uzupełnić ten brakujący fragment wiedzy, który zawsze może się komuś przydać!

"THROW" W JĘZYKU JAVA POZWOLI CI ZGŁOSIĆ WYJĄTEK JAWNIE!

Materiał będzie zakładał, że wiesz na czym polega wyjątek, a jeżeli nie, to sięgaj tutaj kolego/koleżanko 😄. Resztę zapraszam sięgać wzrokiem niżej 😉!

Jak dobrze już wiesz, program może zgłosić wyjątek jeżeli dana instrukcja "ryzykowna" dostrzeże coś, czego się nie spodziewała na swej drodze. Wtedy Cię "ciągnie za nogawkę", żebyś coś z tym zrobił(a). Aczkolwiek nikt nie powiedział, że Ty sam(a) nie możesz sprowokować zgłoszenia wyjątku definiując w ten sposób własne przypadki uznawania czegoś za niepożądane. To się bardzo przydaje w sytuacjach, w których kod sam w sobie nie doprowadzi do katastrofy, natomiast algorytm operujący na nim "głupieje", a Ty już widzisz że z jakichś względów nie przyniesie już oczekiwanego rezultatu.

Weźmy za przykład wyznaczanie ścieżki do wskazanego celu. Wyobraź sobie, że zachodzi przypadek nieznalezienia jakiejkolwiek ścieżki i algorytm kończy normalnie działanie, tak jakby nic się nie stało. To nie jest coś niedopuszczalnego dla aplikacji, ponieważ nie doszło do jakiejś sprzecznej operacji, natomiast mimo wszystko powinno się otworzyć furtkę dla użytkownika, aby mógł obsłużyć taki przypadek, bo to już robi znaczenie dla niego. Jeżeli podstawimy to do gier, to jak przeciwnik ma się zachować kiedy nie znajdzie ścieżki do gracza 🤔? Ma stać bezczynnie, bo program zakończył działanie zwracając kod wyjściowy 0 (zero) 😊?

Właśnie w takich przypadkach jak ta opowieść w poprzednim akapicie powinna nas skłonić do refleksji, żeby skorzystać ze słowa "throw" w języku Java i wyraźnie nakazać kompilatorowi, aby tę naszą sytuację uznał za niedopuszczalną, nawet jeżeli taką nie jest.

JAK Z TEGO KORZYSTAĆ?

Wystarczy w dowolnym miejscu w naszym kodzie, umieścić taką oto instrukcję:

throw new Exception();

Tylko to spowoduje pewną "reakcję łańcuchową", ponieważ język Java jest bardzo rygorystyczny co do oznaczeń sytuacji wyjątkowych 😳. Jeżeli wstawisz słowo "throw" w którejś metodzie, będziesz musiał(a) od razu wstawić deklarację do metody, że może zgłosić wyjątek:

public void doSomething() throws Exception {
	// instrukcje
	
	throw new Exception();
}

To na ogół wystarcza, jednak możesz doprecyzować które konkretnie mogą wystąpić, tylko wtedy uwaga ⚠️! Nie dość, że typy wyjątków muszą się zgadzać, to jeszcze musisz podać wszystkie typy jakie mogą wyskoczyć w przypadku podawania ich większej liczby (bądź wykorzystujesz operacje, które one mogą zgłosić konkretny wyjątek):

public void doSomething() throws FileNotFoundException, InterruptedByTimeoutException {
	if(value > 5)
	{
		throw new InterruptedByTimeoutException();
	}

	throw new FileNotFoundException();
}

Jednak to nie jest do szczęścia potrzebne.

Jawne zgłaszanie wyjątku przy pomocy słowa kluczowego "throw" w języku Java

Słowo "throw" w języku Java pozwala nakazać kompilatorowi zgłosić wyjątek w przypadkach niestandardowych, kiedy Ty uznajesz, że taki powinien zostać zgłoszony!


To wszystkie najważniejsze informacje jakie musisz znać na ten temat. Nie jest to konieczna wiedza, jednak może Ci się przydać skonstruowanie możliwości zgłaszania wyjątków jawnie ☀️!

PODOBNE ARTYKUŁY