반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

배움과 기록의 장

[Java] 예외 처리 본문

backend/java

[Java] 예외 처리

chaeunii 2025. 4. 9. 14:34

2023.1.4 작성

 

🔸 예외처리 exception handling 란?

- 예기치 않게 발생하는 에러에 대응할 수 있는 코드를 사전에 작성하여 프로그램의 비정상적인 종료를 방지하고, 정상적인 실행 상태를 유지할 수 있도록 하는 것

-내부적인 요인(개발자의 코드작성 에러) , 외부적인 요인(하드웨어ex.메모리 문제, 네트워크의 연결끊김, 사용자 조작 오류)

-발생 시점에 따라 컴파일에러, 런타임 에러로 구분 (+ 논리적인 오류가 있을 경우에 발생하는 논리적 에러까지 있음)

 

🔸 컴파일 에러 (Compile Time Error)

-신택스 에러 syntax errors

-자바 컴파일러가 오류를 감지

 

🔸 런타임 에러 (Run Time Error)

-프로그램 실행 시 만나게 되는 에러

-주로 개발자가 컴퓨터가 수행할 수 없는 특정한 작업을 요청할 때 발생 ex 나누기 0 -> ArithmeticException

-자바가상머신(JVM)이 오류를 감지

 

🔸 에러와 예외

-에러란 복구하기 어려운 수준의 심각한 오류 ex. 메모리부족(OutOfMemoryError), 스택오버플로우(StackOverflowErro)

-예외는 잘못된 사용 또는 코딩으로 인한, 주로 개발자에 의해 핸들링이 가능한 상대적으로 미약한 수준의 오류

 

🔸 예외 클래스의 상속 계층도

- 모든 에러와 예외 클래스는 Throwable클래스로부터 확장 (Throwable은 java.lang.Object로 부터)

- 모든 예외의 최고 상위 클래스는 Exception 클래스 

- Exception클래스는 크게 일반예외 클래스(컴파일러가 검사, chechked 예외, ex.ClassNotFoundException, DataFormatException)와 실행 예외클래스 (컴파일러가 검사x, unchecked 예외, ex.ClassCastException, ArrayIndexOutOfBoundsException, NullPointerException)로 나눌 수 있음

 

🔸 예외를 처리하는 try- catch 문

try {
    // 예외가 발생할 가능성이 있는 코드를 삽입
} 
catch (ExceptionType1 e1) {
    // ExceptionType1 유형의 예외 발생 시 실행할 코드
} 
catch (ExceptionType2 e2) {
    // ExceptionType2 유형의 예외 발생 시 실행할 코드
} 
finally {
    // finally 블럭은 옵셔널
    // 예외 발생 여부와 상관없이 항상 실행
}

-예외가 발생할 때 생성되는 예외 객체로부터 해당 에러에 대한 정보를 얻을 수 있는 방법 세가지 

 e1.getMessage(), e1.toString(), e1.printStackTrace() 가 있는데, 자세한 내용은 궁금할 때 검색해보기!

 

🔸 예외를 처리하는 또 다른 방법인 예외 전가 

- 예외를 호출한 곳으로 다시 예외를 떠넘기는 방법 throws

void ExampleMethod() throws Exception {
}

 -코드를 실행할 때 사용하는 main()메서드에서 throws키워들르 사용하면, JVM이 최종적으로 예외의 내용을 콘솔에 출력하여 예외처리를 수행함

 

🔸 예외를 의도적으로 발생시키는 throw

- 사용예시

Exception makeException = new Exception("내가 만든 예외~");
throw makeException;

 

 

 

반응형

'backend > java' 카테고리의 다른 글

[Java] Stringifyjson  (0) 2025.04.09
[Java] 제네릭  (0) 2025.04.08
[Java] Enum  (0) 2025.03.23
[Java] 배열의 요소와 값, 배열과 주소값  (0) 2023.01.12