[필수용어 실무 2편] 실무에서 마주치는 예외 처리 & 트러블슈팅 핵심 25선

들어가며 – “에러를 이해하면 실무가 쉬워진다”

개발 초반에는 에러가 나면 당황하고, 어디서부터 손대야 할지 모르는 경우가 많습니다. 하지만 예외 처리(Exceptions)와 트러블슈팅(Troubleshooting) 흐름을 이해하면, 버그를 빠르게 해결하고, 안정적인 시스템을 만들 수 있습니다.

이번 편에서는 실무에서 자주 마주치는 예외 및 오류를 기준으로, 비전공자도 바로 적용 가능한 25가지 핵심 패턴을 정리했습니다. 제가 실제로 많이 겪고 느낀 부분을 중점적으로 정리하였으니 처음 입문하시거나 초급 개발자로 계시는 분들은 참고하시면 더욱 좋습니다.

실무에서 먹히는 개발용어 5

예외(Exception)란?

  • 코드 실행 중 발생하는 예상치 못한 상황
  • Java에서는 try-catch, Python에서는 try-except로 처리
try {
    int result = 10 / 0;
} catch (ArithmeticException e) {
    System.out.println("0으로 나눌 수 없습니다!");
}

➡️ 포인트: 사용자에게 친절한 메시지를 보여주고, 서버 다운을 방지합니다.(웹개발에서는 JSP에서 alertcmdMessage를 활용하기도 합니다.)
➡️ 참고 : Java Exception Tutorial


Checked vs Unchecked Exception

  • Checked: 반드시 처리해야 하는 예외 (e.g., IOException)
  • Unchecked: 선택적으로 처리 (e.g., NullPointerException)

NullPointerException

  • 객체가 null인데 접근 시 발생
  • 예시 : DB 조회 결과가 없을 때
User user = null;
System.out.println(user.getName()); // NPE 발생

ArrayIndexOutOfBoundsException

  • 배열 범위를 벗어난 접근 시 발생
int[] arr = {1,2,3};
System.out.println(arr[3]); // Index 3 없음

➡️ 포인트: 반복문 범위 체크 필수
Tip) 정보처리기사 실기에서 예외 구문이 등장한 적이 있습니다. 꼭 알아두시길 바랍니다.


ClassCastException

  • 잘못된 형 변환 시 발생
Object obj = "제로";
Integer num = (Integer)obj; // ClassCastException

SQL Exception

  • DB 쿼리 실행 오류
Statement stmt = conn.createStatement();
stmt.executeQuery("SELECT * FROM unknown_table"); // SQLException

HTTP 404 에러

  • 요청한 URL이 없을 때 발생
  • 예시: API URL 오타, 프론트에서 잘못된 링크

Tip) 404 에러를 방지하기 위해 리디렉트(리다이렉트)로 정상URL을 자동 호출하도록 하면 404페이지가 뜨지 않고 정상페이지로 넘어갑니다.


HTTP 500 에러

  • 서버 내부 오류

➡️ 포인트: 서버 로그 확인 → 원인 분석
Tip) 서버 내부의 오류가 자동으로 로그로 남게 되고 이 로그를 분석해서 원인을 찾습니다. 매우 중요합니다.


Timeout Exception

  • 요청 시간이 초과될 때 발생
  • DB, API, 외부 서비스 호출 시 자주 발생

Stack Overflow

  • 재귀 호출이 끝없이 반복될 때 발생
void recurse() { recurse(); }
recurse();

재귀호출 : 함수가 자기 자신을 다시 호출하는 것
Tip) 정보처리기사 필기에서 단골 출제, 실기에서는 개념을 알아야 문제풀이가 가능하기에 꼭 외우셔야 합니다


Memory Leak

  • 사용 후 메모리를 해제하지 않아 점점 메모리가 부족해지는 현상

➡️ 포인트: 자바는 GC가 있지만, 객체 참조 관리 필수


Deadlock

  • 다중 스레드가 서로 자원 점유하며 대기

➡️ 포인트: synchronized, Lock 사용 시 주의


Infinite Loop

  • 종료 조건 없는 반복문
  • CPU 점유율 급상승, 서버 다운 가능

Tip) 코드로 예시를 들면 while 문에서 break; 를 쓰지 않아 무한 루프에 걸리는 현상


Syntax Error

  • 문법 오류

➡️ 포인트: IDE에서 실시간 표시 → 초보자 필수 확인


Logical Error

  • 문법은 맞지만, 의도와 다르게 동작
  • 예시: if 조건 반대로 작성
if(score > 100) { 
    System.out.println("Pass"); 
} // 오류

Null Check

  • NPE 방지 필수
if(user != null) { 
    System.out.println(user.getName()); 
}

NPE 란? : NullPointerException의 줄임말, 객체가 null인 상태에서 그 객체의 메서드나 필드에 접근할 때 발생하는 오류


Logging

  • 에러 위치, 내용 기록
  • SLF4J, Log4j 등 활용

Debugging

  • IDE 디버거 사용
  • 브레이크포인트 → 변수 확인 → 문제 해결

Tip) 디버깅은 필수!


Exception Propagation

  • 예외를 상위 메소드로 전달
  • throws 키워드 활용
public class ExceptionPropagationExample {

    // 예외가 발생할 수 있는 메서드
    static void readFile() throws IOException {
        // 파일이 없으면 IOException 발생
        throw new IOException("파일을 찾을 수 없습니다.");
    }

    // readFile()을 호출하지만 예외를 처리하지 않음 → 상위로 전파됨
    static void processFile() throws IOException {
        readFile(); // 예외가 여기서 발생하지만 처리하지 않음
    }

    // main()에서 최종적으로 예외를 처리
    public static void main(String[] args) {
        try {
            processFile();
        } catch (IOException e) {
            System.out.println("⚠ 예외 처리 완료: " + e.getMessage());
        }
    }
}

Try-with-Resources

  • 자원 자동 해제
try(FileReader fr = new FileReader("data.txt")) {
    // 작업
} catch(IOException e) {
    e.printStackTrace();
}

API Error Handling

  • 외부 API 호출 시 상태 코드 확인
  • 실패 시 재시도 로직, fallback 구현

Unit Test

  • JUnit, PyTest 등으로 코드 검증
  • 예외 발생 케이스 포함 테스트 필수

Error Notification

  • Sentry, Slack, Email 연동 → 실시간 알림

➡️ 포인트: 장애 대응 속도 향상


Monitoring

  • 서버 상태, CPU, 메모리, DB 연결 등 관찰
  • Grafana, Prometheus 활용

Troubleshooting Flow

  • 1️⃣ 에러 재현
  • 2️⃣ 로그 확인
  • 3️⃣ 코드 흐름 파악
  • 4️⃣ 원인 수정
  • 5️⃣ 테스트 및 배포

➡️ 포인트: 체계적 흐름이 문제 해결 시간 단축


마무리

예외 처리와 트러블슈팅은

  • 에러를 두려워하지 않고
  • 원인을 빠르게 분석하고
  • 안정적인 서비스를 만드는 개발자의 필수 역량입니다.

다음 편 예고

“실무에서 바로 쓰는 JSP&MVC 패턴 실무 흐름 완전정복 25선” 으로 이어집니다. 화면과 사용자의 경험까지 고려한 실무 개발 팁을 다룰 예정입니다. 많은 기대 부탁드립니다!

실무를 앞두고 두려우시다면? [필수용어 실무 1편] 비전공자가 실무에서 바로 활용 가능한 데이터 연동 & 서버 흐름 25선

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤