【Java】오류 메시지를 제대로 읽고 있습니까? 【스택 트레이스를 읽는 방법】

소개



열심히 쓴 프로그램이 오류를 토했을 때 오류 메시지를 제대로 읽고 있습니까?
「영어이니까 야다ー 」라고 도망치고 있지 않습니까?
그러고 보면, 에러의 읽는 방법은 연수등에서 가르치지 않는 것 같은 생각이 듭니다.
에러 메시지는 모두 영어입니다만, 포인트만 누르면 제대로 해독할 수 있습니다.
(영어이니까) 도망치지 마라.

오류 메시지 읽기 순서



아래의 오류 샘플을 사용하여 순서대로 읽어 봅시다
※신인씨 전용의 내용(의 생각)이므로, 천천히 페이스로 에러를 읽어 가네요.

샘플 프로그램.java
package section01;

import java.util.Random;

/*
 * ランダム配列の生成
 * オーダー:2Nパターン
 */
public class practice4 {

    public static int NUM = 10;

    public static void main(String[] args) {
        int[] numArray = new int[0]; /* 要素数ゼロの配列を宣言している */
        Random random = new Random();

        int i, randomNum;
        for(i = 0 ; i < NUM ; i++) {
            numArray[i] = i; /* ここでexceptionが発生する */
        }

        for(i = NUM-1 ; i > 1 ; i--) {
            randomNum = random.nextInt(NUM-1);
            int tmp = numArray[randomNum];
            numArray[randomNum] = numArray[i];
            numArray[i] = tmp;
        }

        for(i = 0 ; i < NUM ; i++) {
            System.out.println(Integer.toString(numArray[i]));
        }
    }
}

오류 샘플
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at section01.practice4.main(practice4.java:20)★

1) 오류 메시지의 시작 지점으로 천천히 돌아갑니다.



오류 메시지가 한 번에 출력되면 커서가 맨 아래로 내려갑니다.
샘플로 말하면, (practice4.java:20)의 다음에 있는★의 개소입니다.
그러므로 화면을 스크롤하여 에러 메시지가 출력된 시작 지점까지 천천히 돌아갑시다.
마우스 휠을 돌면서 전체 그림을보십시오.
덧붙여서, 샘플이므로 2 행으로 끝나고 있습니다 만, 프레임 워크를 사용하고 있으면 더 많이 나옵니다

2) 맨 앞에 있는 「Exception」이나 「Error」의 문자를 찾는다



샘플이라고 하면Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0의 개소입니다.
그 외에는
  • NullPointerException
  • NumberFormatException
  • OutOfMemoryError

  • 등등.
    이것은 오류의 내용입니다.
    의미를 알 수 없으므로 먼저 Exception/Error를 찾습니다.
    중요한 것은, 「의미 모르지만, NullPointerException라고 하는 에러가 발생하고 있는구나」라고 인식하는 것입니다.

    3) 움직인 프로그램의 클래스명을 찾는다



    Java에 한하지 않고, 대부분의 프로그래밍 언어는, 에러가 발생한 장소를 「어떤 파일의 몇행째」라고 출력해 줍니다.
    그러니까, 우선은 자신이 움직인 프로그램의 클래스명을 찾아 봅시다
    샘플이라고 at section01.practice4.main(practice4.java:20)의 개소입니다.
    여기까지 오면,
  • practice4.java의 20 행에서 오류가 발생했습니다.
  • 오류 내용은 "ArrayIndexOutOfBoundsException"입니다.

  • 두 가지를 알았으므로 practice4.java의 20 행에서 발생하는 ArrayIndexOutOfBoundsException를 제거하도록 프로그램을 수정하십시오
    모르면, 「○○의 n행째로 △△라고 하는 exception이 발생했습니다만, 어떻게 해소하면 좋습니까?」라고 물어 버립니다.

    오류 메시지의 계정



    매번 구그라고 하면, 점점 기억해 오므로, 매회 구구하는 일은 없어져 옵니다.
    그러면, 단어의 일부를 본 것만으로 「자신이 어떤 실수를 하고 있는 것인가」라는 짐작이 되어 옵니다.
    또한 대부분의 프로그래밍 언어 or SQL은 오류 메시지와 비슷한 영어 단어를 사용하는 경우가 많기 때문에 언어에 관계없이 어느 정도의 추측이 가능합니다.

    의미와 읽는 방법을 모르더라도 오류의 내용을 알 수 있습니다

    좋은 웹페이지 즐겨찾기