I for 루프 가지고프로그램 종료 전에 나타나는 예외 세부 사항?
for(Location l : locs) {
System.out.println("X:"+l.getX()+", Y:"+l.getY());
try {
if(layer.getObject(l) != null)
out.add(layer.getObject(l));
} catch(NullPointerException e) {
}
}
반복 할 때마다, 그것은 Location[]
배열에서의 위치를 취하고, 그 위치의 X 및 Y를 출력한다. 그런 다음, 다음 줄은지도 레이어 (표준지도 라이브러리가 아닌)의 위치에서 객체를 가져 와서 ArrayList
에 추가합니다.
나는 java.lang.ClassCastException
을 얻고 있습니다.하지만 그건 내 질문이 아닙니다. 그 문제는 스스로 해결할 수 있습니다.
run:
X:0, Y:1
X:0, Y:2
X:0, Y:3
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LMapGrid.OverlayObject;
X:1, Y:1
X:1, Y:3
X:2, Y:1
X:2, Y:2
X:2, Y:3
at MapGrid.MapGrid.getAdjacentOfType(MapGrid.java:86)
at BehaviorMap.BehaviorMap.main(BehaviorMap.java:26)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
이 발견의 목적은 위치 (1,1), 따라서 예외가 위치에 던져졌다에서 (1 : 출력 (특히 예외가 표시되는 방식)을 다음과 같이 나타납니다 왜 내 후 질문입니다 ,1). 이것은 프로그램의 시작부터 설정됩니다. 프로그램이 주 스레드에서 실행 중입니다. 내 질문은, 왜 출력이 이런 식으로 나타 납니까?
이 방법은 프로그램이 (0,3)에 도달했을 때 예외가 던져 졌음을 암시하는 것처럼 보이지만 예외가 발생했을 때 (1,1) throw되어야합니다. 그런 다음 출력은 예외가 발견되면 루프가 종료 될 때까지 프로그램이 계속 실행됨을 의미합니다.
이 동작을 이해하지 못합니다. 처리되지 않은 예외가 발생하면 프로그램이 단순히 종료되지 않는 이유는 무엇입니까? 또한 예외 메시지를 호출하는 줄 앞에 예외 메시지가 나타나는 이유는 무엇입니까? System.out.println
은 try
블록 앞에옵니다.
마지막으로, 왜 이렇게 이상한 방식으로 오류가 분할됩니까? 오류 메시지가 나타나면 프로그램이 실행을 계속 한 후 세부 정보가 나타납니다. 플랫폼은 NetBeans 7.2입니다.
@BheshGurung는 이미 – Zyerah