배움과 기록의 장
[Java] 예외 처리 본문
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 |