Exception

노건우·2023년 7월 14일
0
post-thumbnail

Exception

  • catch블록을 이용한 복합에러 처리
    catch블록은 에러가 예상되는 상황에 대한 복수로 명시하는 것이 가능하다.

  • exception클래스
    java에서 예외 상황을 의미하는 모든 클래스들의 최상위 클래스
    이 클래스의 이름으로 catch블록을 구성하면, 모든 예외 상황에 일괄적으로 대응할 수는 있지만 catch블록이 세분화된 경우와는 달리 상황별 개별적인 처리는 불가능하다.
    Exception클래스에 대한 예외 처리는 대부분 맨 마지막 catch블록에 명시하여 '마지막 알 수 없는 에러'를 의미하도록 구성한다.

  • 에러객체 'e'의 기능
    e.getMessage()
    :간략한 에러메시지를 리턴한다.
    e.getlocalisemessage()도 같은 기능을 한다.
    e.printstacktrace()
    :실제 예외 상황시에 출력되는 메시지를 강제로 출력
    :개발자가 catch블록 안에서 예외 상황을 분석하기 위한 용도로 사용

error와 exception의 차이

비슷하다고 생각할 수도 있지만 조금 다르다. 에러는 컴퓨터의 오류나 고장으로 인하여 일어나지만,
예외는 개발자의 잘못된 조작이나 코딩으로 인해 생긴 오류를 말한다.
예외가 발생하면 프로그램이 종료가 된다는것은 에러와 동일하지만 예외는 예외처리를 통해 프로그램을 종료 되지 않고 정상적으로 작동되게 만들어줄 수 있다. 자바에서 예외처리는 Try Catch문을 통해 해줄 수 있다.

try는 에러가 발생할 수 있는 코드를 말하고, catch는 에러가 났을 때 수행하는 블록을 말한다.
마지막으로 finally는 무조건 실행되는 블록을 말한다.
직접 코드를 통해 예시를 들어보면,
~~ package exception;

		public class Main01 {



	public static void main(String[] args) {
	///사용자 입력값을 가정
	String[] src = {"3", "2", "2"};
	
	///src의 내용들을 숫자로 변환시켜 저장할 배열
	int[] arr = new int[3];
	try {
	for(int i = 0; i<src.length; i++) {
		arr[i] = Integer.parseInt(src[i]);
		System.out.println(arr[i]);
		
	}
	}catch(ArrayIndexOutOfBoundsException e) {
		System.out.println("데이터가 너무 많습니다");
		System.out.println("원인: "+e.getMessage());
		e.printStackTrace();
		
	}catch(NumberFormatException e) {
		System.out.println("입력값에 오류가 있습니다");
		//개발자가 보려는 의도로 출력하는 시스템 에러 메시지
		e.printStackTrace();
	}catch(Exception e) {
		//예외 종류를 의미하는 모든 클래스는 java.lang.exception클래스를 상속받으므로 이 블록은 모든 종류의 예외에 대처할 수 있다.
		System.out.println("알 수 없는 오류가 발생 했습니다");
		e.printStackTrace();
	}
	System.out.println("--프로그램 종료합니다-------");
}	

}~~

이러한 코드로서 예시를 확인할 수 있는데, 결과값은 3
2
2
--프로그램 종료합니다-------
이러한 형태로 출력된다. 현재는 오류가 생기지 않은 상태라는 것을 알 수 있다.
하지만 배열을 추가하거나 잘못된 자료형을 넣으면 어떻게 될까?
//자료형을 잘못된 형태로 넣은 경우


//값을 추가한 경우



이런 모양으로 오류가 발생하게 된다.

profile
초보 개발자 이야기

0개의 댓글