자바생
article thumbnail
Published 2022. 5. 17. 10:21
throw vs throws Java
728x90

throw와 throws는 메서드나 코드 block에서 예외를 명시적으로 던지는 자바의 예외 처리 방법이다

 

throw(파랑색)

  • 메서드 내에서 사용됨
  • 한 번에 하나의 예외만 발생시킬 수 있다
  • throw할 예외의 인스턴스 변수 사용
  • checked exception propagation 할 수 없음
    • unchecked exception만 propagation 할 수 있다
    • 애초에 exception을 명시해주지 않으면 propagation이 일어나기 전에 complie 에러가 발생한다

 

throws(주황색)

  • 메서드 signature에서 사용됨
  • 쉼표로 여러 예외를 선언할 수 있다
  • throws할 예외의 클래스 이름을 쓴다
  • checked exception, unchecked exception propagate 할 수 있음

 

checked Exception?

  • compile 시간에 확인할 수 있는 예외이다
  • 이러한 exception일 경우에는 method signature에서 throws를 명시해야한다
  • 대표적으로 IOException
@Test
@DisplayName("checked Exception propagation은 throws 키워드로만 가능하다")
void checkedException(){
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    br.readLine();
}

위와 같이 컴파일 에러가 발생하게 된다 

하지만 throws를 이용하여 method signature에 예외를 명시해주면 된다

 

@Test
@DisplayName("checked Exception propagation은 throws 키워드로만 가능하다 ")
void checkedException() throws IOException{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String s = br.readLine();
}

 


REFERENCES

throws,throw(geeksforgeeks)

728x90

'Java' 카테고리의 다른 글

JDK ? JRE ?  (0) 2022.09.15
정적 메서드는 왜 오버라이딩 되지 않을까?  (0) 2022.08.29
java 연산자  (0) 2022.05.06
Primitive Type, Reference Type, Literal  (0) 2022.05.03
Java volatile keyword  (0) 2022.04.18
profile

자바생

@자바생

틀린 부분이 있다면 댓글 부탁드립니다~😀

검색 태그