본문 바로가기

개발/JAVA

JAVA 예외처리

컴파일에러: 컴파일 시에 발생하는에러

  • 런타임에러:실행시에 발생하는 에러
  • 논리적에러:실행은 되지만, 의도와는 다르게 동작


런타임에러

  • 에러: 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
  • 예외(exception):프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류
예외클래스 계층도


Exception 클래스들
사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외
존재하지않은 파일이름 입력, 클래스이름잘못입력, 데이터형식이 잘못될 경우에 발생

RuntimeException 클래스들
프로그래머 실수로 발생하는 예외
배열의범위를 벗어남, null인 참조변수의 멤버를 호출, 잘못된 형변환, 정수를으로 나누는 경우에 발생


exception 클래스


try - catch
괄호 생략 불가
if 문으로 예외처리 가능하지만 예외경우를 다 따져야하하므로 한번에 처리할때 유용

public static void main(String[] args) {
		System.out.println(1);
		System.out.println(2);
		try {
			System.out.println(3);
			System.out.println(0/0);
			System.out.println(4);
		} catch (ArithmeticException ae) {
			if(ae instanceof ArithmeticException)
				System.out.println("true");
			System.out.println("ArithmeticException");
		}catch(Exception ae) { //catch 블럭 내에서만 유효하므로 참조변수 ae 중복가능
			System.out.println("Exception");
		}//try-catch의 끝
		System.out.println(6);

첫번째 catch블럭에서 예외를 처리 하였으므로 두번째 catch블럭은 실행되지않음.
Exception은 모든예외의 조상이므로 모든 예외가 처리 될수 있도록 마지막에 위치

예외클래스 객체의 자주사용되는 메서드
printStackTrace() 메서드 정보 + 예외메세지
getMessage() 예외메세지

try {
	System.out.println(3);
	System.out.println(0/0);
	System.out.println(4);
} catch (ArithmeticException ae) {
	ae.printStackTrace();
	ae.getMessage();
}

멀티catch블럭
중복된 코드를 줄임
' | ' 로 연결된 예외클래스 조상 ,자손관계있다면 에러, 조상만 써줌

try{
}catch(ExceptionA | ExceptionB e){
   e.printStacTrace();
}

'개발 > JAVA' 카테고리의 다른 글

Object 클래스-미완/////  (0) 2022.08.21
JAVA 예외발생시키기  (0) 2022.08.20
[JAVA]인터페이스  (0) 2022.08.14
[JAVA] 추상클래스  (0) 2022.08.06
[JAVA] instanceOf연산자  (0) 2022.08.04