예외 발생 했을 때 처리하는 방법이 try-catch말고 메소드를 호출한 곳으로 떠넘길 수도 있다.
throws키워드를 사용한다.
리턴타입 메소드명(매개변수, ./..) throws 예외클래스1, 예외클래스2, ... {}
//혹은
리턴타입 메소드명(매개변수, ./..) throws Exception {}
//으로 모든 예외를
public void method1(){
try{
method2();
}catch(ClassNotFoundException e){
e.printStackTrace();
//처음 호출한데서부터 에러 발생한 끝까지 들어간 내용 그대로 보여준다. 말 그대로 보면,
//stack을 trace 했으니. 처음 호출에서부터 차곡차곡 쌓인 모든 함수들을 그대로 뿌려준다.
}
}
public void method2() throws ClassNotFoundException{
Class class = Class.forName("java.lang.String2");
}
method2에서 try-catch문을 적어주는 대신 throws ClassNotFoundException 키워드를 적어줬다. 이 메서드를 사용할 곳인 method1에서 예외 처리를 해줘야 한다. 그래서 method1에 try-catch문을 작성했다.
thorws를 쓰는 이유?
첫번째 이유는 메서드 선언부에 선언된 throws문을 통해 해당 API를 사용했을 때 어떤 예외가 발생할 수 있는지를 예측할 수 있습니다. 두번째 이유로는 현재 메서드 내에서 예외를 처리할 필요가 없다고 판단했을 경우입니다. 예외 처리에는 생각보다 많은 코드가 필요하게 되며 이는 코드를 읽기 어렵게 만들고 불필요한 코드가 많이 추가되게 만들어 버그를 만들기 쉽습니다. 또한 API를 만드는데에 있어서 내가 처리하기 보다는 내가 만든 API를 사용하는 다른 개발자에게 원하는 처리를 하도록 기회를 줄 수 있습니다. 출처: https://dololak.tistory.com/87 [코끼리를 냉장고에 넣는 방법]
반응형
'Java' 카테고리의 다른 글
예외 : 정보 얻기 printStackTrace(), getMessage() (0) | 2021.03.25 |
---|---|
예외 : 사용자 정의 예외와 예외 발생 (0) | 2021.03.25 |
예외 : try-with-resource (0) | 2021.03.25 |
예외 : try-catch-finally (0) | 2021.03.25 |
예외 : 예외와 예외 클래스 (0) | 2021.03.25 |
Uploaded by Notion2Tistory v1.1.0