Przechodzę przez program używający gniazd. W nim printStackTrace
jest wywoływany na IOException
obiekcie w bloku catch.
Co printStackTrace()
właściwie robi?
catch(IOException ioe)
{
ioe.printStackTrace();
}
Nie jestem świadomy jego celu. Do czego jest to używane?
e.printStackTrace(); System.exit(1);
Tutaj chcę zadać to samo pytanie co OP, ale w innym duchu: Jaki dokładnie jest tego cel? Czy środowisko JRE nie wydrukuje automatycznie śladu stosu i zakończy działanie, gdy zostanie zgłoszony wyjątek? To znaczy, tak naprawdę nie dzieje się tutaj zbyt wiele „Obsługa wyjątków”, prawda?Odpowiedzi:
Jest to metoda na
Exception
instancjach, która drukuje ślad stosu instancjiSystem.err
.To bardzo proste, ale bardzo przydatne narzędzie do diagnozowania wyjątków. Informuje, co się stało i gdzie w kodzie to się stało.
Oto przykład, jak można go wykorzystać w praktyce:
źródło
catch
bloków :-)throw new RuntimeException(e)
To też mnie zaciekawiło, więc stworzyłem mały przykładowy kod, w którym możesz zobaczyć, co robi:
Wołanie
println(e)
:Wołanie
e.printStackTrace()
:źródło
System.err.println(e);
będzie bardziej odpowiedni.Pomaga prześledzić wyjątek. Na przykład, piszesz jakieś metody w swoim programie, a jedna z nich powoduje błąd. Wtedy printstack pomoże ci zidentyfikować, która metoda powoduje błąd. Stos pomoże w ten sposób:
Najpierw twoja główna metoda zostanie wywołana i wstawiona do stosu, następnie druga metoda zostanie wywołana i wstawiona do stosu w kolejności LIFO, a jeśli jakikolwiek błąd wystąpi gdzieś wewnątrz dowolnej metody, ten stos pomoże zidentyfikować tę metodę.
źródło
printStackTrace()
pomaga programiście zrozumieć, gdzie wystąpił rzeczywisty problem.printStacktrace()
Jest to metoda klasyThrowable
zjava.lang
pakietu. Wyświetla kilka wierszy w konsoli wyjściowej. Pierwsza linia składa się z kilku strun. Zawiera nazwę podklasy Throwable i informacje o pakiecie. Począwszy od drugiego wiersza, opisuje pozycję błędu / numer wiersza zaczynający się odat
.Ostatni wiersz zawsze opisuje miejsce docelowe, którego dotyczy błąd / wyjątek. Druga ostatnia linia informuje nas o następnej linii na stosie, do której przechodzi kontrola po otrzymaniu transferu z numeru linii opisanego w ostatniej linii. Błędy / wyjątki reprezentują dane wyjściowe w postaci stosu, które zostały wprowadzone do stosu
fillInStackTrace()
metodąThrowable
klasy, która sama wypełnia szczegóły transferu sterowania programem do stosu wykonywania. Linie zaczynające się odat
, to nic innego jak wartości stosu wykonywania. W ten sposób programista może zrozumieć, gdzie w kodzie znajduje się rzeczywisty problem.Wraz z
printStackTrace()
metodą warto użyće.getmessage()
.źródło
printStackTrace()
wypisuje lokalizacje, w których wystąpił wyjątek w kodzie źródłowym, umożliwiając autorowi, który napisał program, sprawdzenie, co poszło nie tak. Ale ponieważ pokazuje problemy w kodzie źródłowym, użytkownicy, którzy mogą lub nie mają doświadczenia w kodowaniu, mogą nie być w stanie zrozumieć, co poszło nie tak, więc jeśli program umożliwia użytkownikowi wysyłanie komunikatów o błędach do autorów, użytkownicy mogą nie być w stanie podać dokładnych danych na temat tego, co poszło nie tak.Powinieneś rozważyć
Logger.getLogger()
metodę, która oferuje lepszą obsługę wyjątków (rejestrowanie), a poza tymprintStackTrace()
bez argumentów jest uważana za przestarzałą i powinna być używana TYLKO do celów debugowania, a nie do wyświetlania użytkownika.źródło
printStackTrace()
Pomaga programista zrozumieć, gdzie wystąpił rzeczywisty problem.printStackTrace()
Metoda jest członkiem klasyThrowable
wjava.lang
pakiecie.źródło
printStackTrace
jest metodąThrowable
klasy. Ta metoda wyświetla komunikat o błędzie w konsoli; gdzie otrzymujemy wyjątek w kodzie źródłowym. Te metody mogą być używane z blokiem catch i opisują:Trzy metody opisujące wyjątek na konsoli (w której printStackTrace jest jedną z nich) to:
printStackTrace()
toString()
getMessage()
Przykład:
źródło
printStackTrace () pomaga programiście zrozumieć, gdzie wystąpił rzeczywisty problem. Pomaga prześledzić wyjątek. jest to metoda printStackTrace () klasy Throwable dziedziczona przez każdą klasę wyjątków. Ta metoda wyświetla ten sam komunikat obiektu e, a także numer wiersza, w którym wystąpił wyjątek.
Poniżej znajduje się kolejny przykład stosu drukowania wyjątku w Javie.
java.lang.Throwable: To jest nowy wyjątek w Javie ... w ClassName.methodName (fileName: 5)
źródło
Jakie jest zastosowanie metody e.printStackTrace () w Javie?
Cóż, celem korzystania z tej metody
e.printStackTrace();
jest sprawdzenie, co jest nie tak.Na przykład chcemy obsłużyć wyjątek. Spójrzmy na następujący przykład.
Użyłem metody
e.printStackTrace();
, aby dokładnie pokazać, co jest nie tak.Na wyjściu widzimy następujący wynik.
źródło
printStackTrace()
informuje, w której linii pojawia się błąd oraz dlaczego pojawia się błąd.Przykład:
źródło