Exception

성혜·2024년 1월 23일
0

Java

목록 보기
20/25
post-thumbnail

예외, Exception

실행타임의 에러 - 잡기 힘든 심각한 에러
=> 이를 줄이기 위해 try~Catch 구문 사용

  • 에러는 실행타임 에러와 컴파일 에러로 나뉨, 예외는 실행타임 에러를 말함

자바에서는 실행타임에 에러가 발생할 가능성이 높은 곳 (보통 입출력 관계된 곳)에는
컴파일러 차원에서 에러처리를 사용하도록 강요한다.

즉, 에러발생확률이 높은 곳은 반드시 에러처리 구문을 사용해야 한다.


  • 예외 처리 방법 (if문 / try-catch문)
		//요구사항] 숫자를 입력받아 처리를 하시오.
		Scanner scan = new Scanner(System.in);
		
		System.out.print("숫자: ");
		
		//0이 들어가면 예외 발생
		int num = scan.nextInt();
		
		//예외 조건
		if(num !=0) {
			//비즈니스코드(업무코드)
			System.out.printf("100 / %d = %d\n", num, 100/num);
		} else {
			//예외처리코드
			System.out.println("0을 입력하지 마시오.");
		}
		
		
		
		//*** try문 > 감시!!! > 에러가 발생하는지 계속 검사!! //에러가 발생하기 전까지만 try 실행 
		//*** catch문 > 예외처리!!!
		
		try { //에러가 발생해도 프로그램을 중단하지 않고 예외처리를 한 후 프로그램을 진행함
			//비즈니스코드(업무코드)
			System.out.println(111);
			System.out.printf("100 / %d = %d\n", num, 100/num);
			System.out.println(222);
		} catch (Exception e) {
			
			//e: 예외 객체
			//- 발생한 예외에 대한 여러가지 정보를 제공하는 객체
			//System.out.println(e.getMessage());
			e.printStackTrace(); //에러 메세지를 보여줌
			
			//예외처리코드
			System.out.println("0을 입력하지 마시오.");
		}
		
		System.out.println("종료"); 
		
	}

  • finally
    :실행을 하고 나오게 되는 것을 결과에서 볼 수 있도록 해준다.
Scanner scan = new Scanner(System.in);
		
		System.out.print("숫자: ");
		
		int num = scan.nextInt();
		
		try {
			//비즈니스 코드 영역
			System.out.println(100 / num);
		} catch (Exception e) {
			//예외 처리 영역
			System.out.println("예외 처리");
			
		} finally {
			//자원 해제 영역
			//성공 or 실패 > 무조건 실행하는 영역
			System.out.println("finally");
			scan.close(); // 자원 해제 > clean-up code.
		}
		
	}
    
 //결과
 숫자: 0
예외 처리
finally

  • 에러 미루기 (throw)
    특정 메서드에 발생한 예외를 해당 메서드가 직접 처리하지 않고, 그 예외 처리의 책임을 메서드를 호출한 쪽으로 넘기는 기술

	private static void m5() throws Exception{
		int n =0 ;
		System.out.println(100/n);
		
	}
    
    public static void main(String[] args) {
		
		try {
			m5();
			
		} catch (Exception e) {
			System.out.println("에러처리");
		}
		
	}//main
profile
하루를 정리하고 기록합니다.

0개의 댓글