예외 스택은 우리가 일상생활에서 문제를 찾아내는 가장 중요한 수단이며, 문제 해결에 큰 도움을 줍니다. 그러나 우리 모두는 예외를 보는 습관을 가지고 있을 수 있습니다. 특히 예외 스택과 깊은 수준이 많을 때 더욱 그렇습니다.
매우 걱정스럽고 두려웠습니다. 빠르게 스캔하여 문제가 무엇인지 추측하기 시작했고, 그 추측에 따라 계속해서 코드를 조정했습니다. 많은 시간.
이유는 다음과 같습니다.
1. 예외 스택 정보를 주의 깊게 살펴보지 않았습니다.
2.스택이 너무 많아 문제의 원인이 무엇인지 모르겠습니다.
해결책은 다음과 같습니다.
1. 예외 스택 생성 프로세스를 알아보세요.
2. 인내심을 갖고 스택 정보를 읽어보세요.
3. 문제 해결
1. 예외 생성 프로세스: 위에서 오류가 보고되면 아래를 따릅니다.
예: 다음 테스트 코드가 있습니다
package com.bsx.test; public class TestException { public static void main(String[] args) { TestException exception = new TestException(); exception.m1(); } public void m1() { m2(); } public void m2() { m3(); } public void m3() { String name = null; System.out.println(name.length()); } }
실행 후 출력 결과는 다음과 같습니다. 이 오류는 로그 출력 순서가 호출 순서와 반대라는 것을 알 수 있습니다. 이유는 무엇입니까?
우리는 Java 메소드가 실행될 때 가상 머신 스택에서 실행된다는 것을 알고 있습니다. 메소드가 실행될 때마다 새로운 스택 프레임이 생성되어 가상 머신 스택에 푸시됩니다.
후입선출 구조이므로 오류가 보고되면 수신자로부터 먼저 오류를 보고한 다음 호출자가 차례로 오류를 보고합니다. 따라서 오류를 인쇄할 때의 순서도 마찬가지입니다. 오류 위치는 맨 위에 있고 호출자는 순서대로입니다. 이것으로부터 우리는 결론을 내릴 수 있습니다. 오류는 위에서 보고되었으며 다음과 같습니다.
2. 오류 메시지 이해: 코드에서 오류 위치 찾기위 분석을 통해 오류 위치가 위에 있음을 알 수 있습니다. 대부분의 경우 상단의 오류 메시지는 코드에서 오류가 발생한 위치입니다.
그러나 때로는 상단 로그가 우리 자신의 코드가 아닐 수도 있습니다. 그 이유는 우리 코드가 일부 타사 jar 패키지의 코드를 호출하기 때문입니다. 그러나 이는 문제를 찾는 데 영향을 미치지 않습니다. 위에서 보고된 오류를 기반으로 문제를 찾고 아래를 따릅니다. 그러면 실제 오류 위치는 여전히 위에 있습니다.
그럼 위에서 아래로 우리만의 코드만 찾으면 됩니다. 발견된 코드의 첫 번째 위치는 오류를 일으킨 코드의 위치입니다. 때로는 일부 오류 메시지가 명백하여 오류 메시지를 기반으로 문제의 핵심을 직접 찾을 수 있습니다.
오류 메시지가 오류의 원인을 명확하게 나타내지 않는 경우가 있습니다. 이때 정확한 위치에 중단점을 설정하여 디버깅할 수 있습니다.
위 내용은 Java의 예외 스택에서 예외가 발생한 위치를 찾는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!