[Java] 자바 프로그래밍에서 흔히 발생하는 에러와 해결 방법!

2023. 3. 1. 01:30·Java

Java 에러란?

Fig. 1. https://m.dongascience.com/news.php?idx=19568

자바 프로그래밍에서 에러는 불가피한 존재이며, 이를 해결하는 것은 중요한 프로그래밍 능력 중 하나입니다.이번 글에서는 자바에서 흔히 발생하는 에러에 대해 다루고, 이를 해결하는 방법에 대해 알아보겠습니다

Java에서 발생할 수 있는 에러는 크게 3가지로 나눌 수 있습니다

  1. 컴파일 에러(Compile-time Error): 코드를 컴파일하는 동안 발생하는 에러로, 문법적인 오류나 타입 불일치 등 코드를 컴파일할 수 없는 경우 발생합니다. 이러한 에러는 코드를 컴파일하지 않고 수정해야 합니다.
  2. 런타임 에러(Runtime Error): 코드를 실행하는 동안 발생하는 에러로, 프로그램이 실행되는 과정에서 예외가 발생할 때 발생합니다. 런타임 에러는 코드를 수정하여 예외를 처리할 수 있습니다.
  3. 논리적 에러(Logical Error): 컴파일 오류나 예외 발생 없이 코드가 정상적으로 실행되는데, 그 결과가 예상과 다르게 나오는 경우를 말합니다. 이러한 에러는 코드를 분석하여 수정해야 합니다.

추가적으로 우리는 컴파일 에러는 정적에러(Static error)라고도 부르고 런타임 에러를 동적에러(Dynamic error)라고 부릅니다


 

주요 에러 및 해결 방법

Fig. 2. https://www.whatap.io/ko/blog/40/

주요 에러와 해결 방법에 대한 좀 더 자세한 설명은 아래와 같습니다:

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의 메모리 설정을 조정하는 등의 방법이 있습니다.

위와 같은 에러들은 자주 발생하는 에러이기 때문에, 프로그래머는 미리 예방하거나 적절히 예외 처리를 하는 것이 중요합니다


 

저작자표시 비영리 변경금지 (새창열림)
'Java' 카테고리의 다른 글
  • [Java] 자바에서 ConcurrentModificationException이 발생하는 이유와 해결 방법 | Map.keySet()
  • [Java] Collection | 자바 List | ArrayList | 다양한 메소드
  • [Java] 이클립스에서 JUnit 사용법: 간편하게 test case 작성하기
  • 자바Java | Hailstone Sequence | Java 기초 문제
Jelong
Jelong
커스텀 웹: https://jaehong-park.com Github: https://github.com/qkrwoghd04
  • Jelong
    24/7 Developer's Note
    Jelong
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Software Engineering
      • Ubuntu
      • Network
      • JavaScript
      • Web
      • Interaction Design
      • React Native
      • React
      • Algorithm
      • Java
      • Database design
      • IT Trend
      • TroubleShooting
      • AWS
      • Interview
      • LG CNS AM CAMP 1기
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Queues
    GPT-4
    frontend
    소프트웨어 공학
    typescript
    AWS
    알고리즘
    generic
    미니넷
    데이터 구조
    알고리즘 분석
    java
    블랙 박스 테스트
    JS
    heap
    티스토리챌린지
    ChatGPT
    expo
    자바스크립트
    이진트리
    화이트 박스 테스트
    javascript
    prototyping
    html
    mininet
    오블완
    BST
    자바
    React
    css
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Jelong
[Java] 자바 프로그래밍에서 흔히 발생하는 에러와 해결 방법!
상단으로

티스토리툴바