가장 빈번하게 발생하는 실행 예외
객체 참조가 없는 상태의 참조 변수로 객체 접근 연산자 도트를 사용할 경우 발생
public class NullPointerExceptionExample {
public static void main(String[] args) {
String data = null;
System.out.println(data.toString());
}
}
출력결과
Exception in thread "main" java.lang.NullPointerException
at NullPointerExceptionExample.main(NullPointerExceptionExample.java:6)
배열에서 인덱스 범위를 초과할 경우
public class ArrayIndexOutofBoundsExceptionExample {
public static void main(String[] args) {
String data1 = args[0];
String data2 = args[1];
System.out.println("args[0]: " + data1);
System.out.println("args[1]: " + data2);
}
}
출력결과
Exception in thread "main" java.lang.ArrayIndexOutofBoundsException: Index 0 out of bounds for length 0
at ArrayIndexOutofBoundsExceptionExample.main(ArrayIndexOutofBoundsExceptionExample.java:5)
예제를 실행할 때 매개변수를 전달하지 않으면 args 배열의 길이가 0이 되므로 args[0]와 args[1]과 같이 인덱스 범위를 벗어나는 접근이 발생
문자열을 숫자로 변환하는 경우
public class NumberFormatExceptionExample {
public static void main(String[] args) {
String data1 = "100";
String data2 = "a100";
int value1 = Integer.parseInt(data1);
int value2 = Integer.parseInt(data2); //NumberFormatException 발생
int result = value1 + value2;
System.out.println(data1 + "+" + data2 + "=" + result);
}
}
출력결과
Exception in thread "main" java.lang.NumberFormatException: For input string: "a100"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at NumberFormatExceptionExample.main(NumberFormatExceptionExample.java:9)