<기초적이지만 복습>
프로그래밍 언어에서 오류는 컴파일 오류, 런타임 오류, 논리 오류로 나눌 수 있다.
-컴파일 오류 : 컴파일 과정에서 잡히는 오류
문법, 자료형, 오타(syntax error) 등등..
-런타임 오류 : 프로그래밍 언어의 규칙으로 찾을 수 없는 오류, 컴파일 과정에서 찾지 못함
(인터프리터 언어에서는 컴파일 하지 않으므로 문법 오류도 런타임 오류로 발생)
-논리 오류 : 별도의 오류 메시지가 뜨지 않는 오류, 컴파일 과정이나 런타임에서 잡히지 않음
자바에서의 런타임 오류?
두 종류로 구분된다 error와 exception
둘 모두 Throwable의 자식 클래스이다.
error : 해결 불가능한 일반적으로 시스템 레벨의 문제
무한루프, 스택오버플로우 등등
exception : 대비하여 해결 할 수 있는 문제(예외처리를 통해서 해결)
exception의 두 종류
Unchecked Exception - 개발자의 실수로 의해 발생(배열 범위 벗어나기, 0으로 나누기 등등)
예외처리가 필수는 아님 , RuntimeException들의 하위 클래스들이다.
Checked Exception - 기타 예외들로 주로 외적 요인으로 발생하며, 예외처리가 필요하다.
예를 들어 파일 입출력과 같이 외부 리소스를 다루면 예기치 못한 상황이 발생하므로 예외처리가 필요
에러나 예외처리를 하지않은 예외 발생시 프로그램은 종료된다.
try catch(예외처리)
try {
//이곳에 예외가 발생 가능한 코드들이 위치한다
} catch (Exception e) {
String errMsg = e.getMessage();
e.printStackTrace();
return ;
}
finally {
// 이곳에 예외 발생 유무 관계없이 무조건 실행되는 코드가 위치
}
}
getMessage : 간단한 예외에 대한 정보를 문자열로 반환
printStackTrace : 예외정보를 출력
디버깅에 활용
어차피 예외처리후 밑에 코드가 실행될 것인데 finally 블럭이 필요할까?
만약 try나 catch블럭에서 return이 수행되는 경우에 그 다음 코드를 실행하지 못하게 된다.
따라서 finally 블럭에 코드를 위치시켜 무조건 실행되게 할 수 있다.
throw로 예외 발생시키기
throw new RuntimeException();
다음과 같이 throw new 예외생성자 를 통해서 예외를 발생시킨다.
컴퓨터가 문제라고 인식하지 못하는 상황에서 인위적으로 발생 시킨다.
또 예외를 발생시키는 상황중 하나로
사용자 정의 예외를 만들어 특정 상황에 throw로 예외를 발생시킬 수 있다.
사용자 정의 예외는 Exception계열의 클래스를 부모 클래스로 하여 클래스로 만들 수 있다.
제대로 파는 자바 (Java) - 얄코 강의를 들으면서 정리했습니다.
'Java&SpringBoot' 카테고리의 다른 글
자바 빌더 패턴이란?(Java,기초) (2) | 2024.03.15 |
---|---|
쓰레드의 동기화 volatile (Java,기초) (0) | 2024.03.13 |
NPE, Optional (Java,기초) (0) | 2024.03.08 |