Exception

똘이주인·2021년 5월 4일
0

예외 처리

오류(error)는 시스템 레벨에서 프로그램에 심각한 문제를 야기하여 실행 중인 프로그램을 종료

하지만, 예외(exception)는 오류와 마찬가지로 실행 중인 프로그램을 비정상적으로 종료시키지만, 발생할 수 있는 상황을 미리 예측하여 처리 가능

try {
    예외를 처리하길 원하는 실행 코드;
		// 기본적으로 맨 먼저 실행되는 코드로 여기에서 발생한 예외는 catch 에서 처리
} catch (e1) {
    e1 예외가 발생할 경우에 실행될 코드;
} catch (e2) {
    e2 예외가 발생할 경우에 실행될 코드;
}  // try에서 발생한 예외 코드나 예외 객체를 인수로 전달받아 그 처리를 담당
...
finally {
    예외 발생 여부와 상관없이 무조건 실행될 코드;
		// try에서 예외가 발생하건 안 하건 맨 마지막에 무조건 실행
}

/*catch 블록과 finally 블록은 선택적인 옵션으로 반드시 사용할 필요는 없음*/

예외(Exception)의 종류

  • 컴파일 시점에 발생하는 예외를 Exception(일반예외)
  • 프로그램 실행시에 발생하는 예외를 RuntimeException(실행예외)

보라색 java.lang.Exception은 자바에서 예외처리를 할 수 있게 제공해주는 최상위 보무 클래스이며 하늘색 Exception들은 단순 Exception입니다. 즉 컴파일 시 발생하는 Exception (일반예외) 하지만 초록색 RuntimeException은 프로그램 실행시 발생하는 런타임Exception (실행예외)

실행예외 : NullPointerException

(NullPointerException : 실제 참조할 대상이 null인데 참조하려고 할때 발생하는 예외)

String[] array = null;

for(int i - 0; i < array.length; i++){
		System.out.println(array[i])
}
System.out.println("실행이 되는가")

/*
결과
Exception in thead "main" java.lang.NullPointerException
									at RuntimeExceptionExample.main(RuntimeExceptionExample.java:3)
*/

//예외 처리 코드를 사용
try {
		String[] array = null;
		
		for(int i - 0; i < array.length; i++){
				System.out.println(array[i])
			}
	}catch(NullPointerException e){
				String msg = e.getMessage();
				System.out.Println("예외 발생" + msg);
	}finally{
				System.out.Println("예외 상관없이 실행");
	}
	System.out.println("실행이 되는가")
}

/*
결과
예외 발생 null
예외 상관없이 실행
실행이 되는가
*/

일반예외 : ClassNotFoundException

(ClassNotFoundException: 해당 클래스가 존재하지 않으면 발생하는 일반 예외)

Class object = Class.forName("java.lang.hajni"); //forName메서드 : 파라미터로 클래스 정보를 넘겨주고, 해당 클래스가 존재하면 객체를 리턴해주는 메소드

System.out.println("실행이 되는가")
/*
컴파일러는 자동으로 일반예외를 감지하고 예외 처리 코드를 사용하도록 강제함.
만약 예외 처리를 구현하지 않으면 프로그램 실행 불가.
*/

//예외 처리 코드를 사용
try{
		Class object = Class.forName("java.lang.hajni");
}catch(**ClassNotFoundException e**){
		e.printStackTrace();
}
System.out.println("실행이 되는가")

/*
결과
java.lang.ClassNotFoundException: java.lang.hajni
*/

0개의 댓글