Java 에러란?
자바 프로그래밍에서 에러는 불가피한 존재이며, 이를 해결하는 것은 중요한 프로그래밍 능력 중 하나입니다.이번 글에서는 자바에서 흔히 발생하는 에러에 대해 다루고, 이를 해결하는 방법에 대해 알아보겠습니다
Java에서 발생할 수 있는 에러는 크게 3가지로 나눌 수 있습니다
- 컴파일 에러(Compile-time Error): 코드를 컴파일하는 동안 발생하는 에러로, 문법적인 오류나 타입 불일치 등 코드를 컴파일할 수 없는 경우 발생합니다. 이러한 에러는 코드를 컴파일하지 않고 수정해야 합니다.
- 런타임 에러(Runtime Error): 코드를 실행하는 동안 발생하는 에러로, 프로그램이 실행되는 과정에서 예외가 발생할 때 발생합니다. 런타임 에러는 코드를 수정하여 예외를 처리할 수 있습니다.
- 논리적 에러(Logical Error): 컴파일 오류나 예외 발생 없이 코드가 정상적으로 실행되는데, 그 결과가 예상과 다르게 나오는 경우를 말합니다. 이러한 에러는 코드를 분석하여 수정해야 합니다.
추가적으로 우리는 컴파일 에러는 정적에러(Static error)라고도 부르고 런타임 에러를 동적에러(Dynamic error)라고 부릅니다
주요 에러 및 해결 방법
주요 에러와 해결 방법에 대한 좀 더 자세한 설명은 아래와 같습니다:
NullPointerException
- 이 에러는 null 값이 허용되지 않는 참조 타입에 null 값을 할당하려고 할 때 발생합니다
- 해결 방법으로는 null 값을 할당하지 않도록 주의하거나, null 체크를 통해 예외 처리를 해주는 방법이 있습니다.
public static void main(String[] args) {
String a = null;
int a_length = a.length();
System.out.println(a_length);
}
//Exception in thread "main" java.lang.NullPointerException:
Cannot invoke "String.length()" because "a" is null
ArrayIndexOutOfBoundsException
- 이 에러는 배열에서 인덱스 범위를 벗어난 값을 참조하려고 할 때 발생합니다.
- 해결 방법으로는 인덱스 값을 조정하거나, 배열의 크기를 늘리는 등의 방법이 있습니다.
public static void main(String[] args) {
int[] a = new int[3];
for(int i = 0; i<=a.length; i++) {
a[i] = i;
System.out.println(a[i]);
}
}
출력 :
0
1
2
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
Index 3 out of bounds for length 3
ClassCastException
- 이 에러는 타입 캐스팅 시 타입 변환을 할 수 없는 경우에 발생합니다.
- 해결 방법으로는 instanceof 연산자를 이용해 타입 캐스팅 전에 타입 검사를 하거나, 프로그램 로직을 수정하는 등의 방법이 있습니다.
public class Animal { //Animal 클래스
public void eat() {
System.out.println("Animal is eating");
}
}
public class Dog extends Animal { //Dog 클래스
public void bark() {
System.out.println("Dog is barking");
}
}
public class Example {
public static void main(String[] args) {
Animal animal = new Animal();
Dog dog = (Dog) animal; // ClassCastException 발생
dog.bark();
}
}
// Exception in thread "main" java.lang.ClassCastException:
class exercise.Animal cannot be cast to class exercise.Dog
FileNotFoundException
- 이 에러는 파일이 존재하지 않을 때 발생합니다.
- 해결 방법으로는 파일의 경로나 이름을 확인하거나, 파일이 존재하지 않는 경우에는 파일을 생성하는 등의 방법이 있습니다.
OutOfMemoryError
- 이 에러는 프로그램이 할당한 메모리 영역이 부족할 때 발생합니다.
- 해결 방법으로는 불필요한 객체를 제거하거나, JVM의 메모리 설정을 조정하는 등의 방법이 있습니다.
위와 같은 에러들은 자주 발생하는 에러이기 때문에, 프로그래머는 미리 예방하거나 적절히 예외 처리를 하는 것이 중요합니다