throw vs try - catch

Moon·2024년 3월 16일

Java

목록 보기
30/45

https://devlog-wjdrbs96.tistory.com/141

https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%98%88%EC%99%B8-%EC%B2%98%EB%A6%ACException-%EB%AC%B8%EB%B2%95-%EC%9D%91%EC%9A%A9-%EC%A0%95%EB%A6%AC#%EB%A9%80%ED%8B%B0_catch_%EB%AC%B8

https://altongmon.tistory.com/193

https://earthconquest.tistory.com/80

try - catch

  • try 블록에서 해당 타입의 예외가 발생하면 catch 블록을 실행하도록 되어있습니다.
  • catch 블록이 여러 개라고 해도 단 하나의 catch 블록만 실행됩니다.
  • try 블록에서 동시에 여러 예외가 발생하지 않고 하나의 예외가 발생하면 즉시 실행을 멈추고 해당 catch 문으로 이동하기 때문입니다.
public class Main {

	public static void main(String[] args) {
		int added;
		int subtracted;

		try {
			added = Calculator.add(3,1000);  
			System.out.println(added);			
			subtracted = Calculator.subtract(3,4);
			System.out.println(subtracted);
		} catch (errorOverThousand | errorNegativeNumber e) { 
			System.out.println("특화된 에러: " + e.getMessage()); 
			  
		} catch (Exception e) {
			System.out.println("catch all에러: " + e);  
		} finally {
			System.out.println("연산이 끝났습니다.");
		}
		
		int multiplied = Calculator.multiply(3,4);
		System.out.println(multiplied);
		int divided = Calculator.divide(3,4);
		System.out.println(divided);
 
	}

}

//특화된 에러: 입력값의 합이 1000을 넘는 오류가 발생하였습니다.
//연산이 끝났습니다.

만약 catch 안에서 첫번째, 두번째 에러 둘다 핸들하고 싶으면 try 를 두 블럭으로 써야 함.

public class Main {
					
	public static void main(String[] args) {
		int added;
		int subtracted;

		try {
			added = Calculator.add(3,1000); 
			System.out.println(added);			
		} catch (errorOverThousand e) {
		 System.out.println("특화된 에러: " + e.getMessage()); 
			 
		}
		
		try {			
			subtracted = Calculator.subtract(3,4);
			System.out.println(subtracted);
		} catch (errorNegativeNumber e) {
		 System.out.println("특화된 에러: " + e.getMessage()); 
			 
		} finally {
			System.out.println("연산이 끝났습니다.");
		}
	}

}

//특화된 에러: 입력값의 합이 1000을 넘는 오류가 발생하였습니다.
//특화된 에러: 입력값의 합이 음수입니다.
//연산이 끝났습니다.

Exception

  • Checked 예외.
  • 컴파일 시점에 잡아줌.
  • 에러를 강제할 필요가 있을 때.

RuntimeException

  • Unchecked 예외.
  • 런타임 시점에 잡아줌.
  • 사용자를 믿을 때.

0개의 댓글