□ 예외란?
예외(Exception)란 프로그램을 만든 프로그래머가 상정한 정상적인 처리에서 벗어나는 경우에 이를 처리하기 위한 방법
□ try - catch
ex) 0으로는 나눌 수 없기 때문에 오류가 발생하게 되는데
try - catch를 통해 오류 내용을 출력함
※ e.메소드
e.getMessage(); → by zero
오류에 대한 기본적인 내용을 출력해준다. 상세하지 않다.
e.toString() → java.lang.ArithmeticException: / by zero
e.toString()은 e.getMessage()보다 더 자세한 예외 정보를 제공한다.
e.printStackTrace()
메소드 getMessage, toString과는 다르게 printStackTrace는 리턴값이 없다.
이 메소드를 호출하면 메소드가 내부적으로 예외 결과를 화면에 출력한다.
printStackTrace는 가장 자세한 예외 정보를 제공한다.
□ 다중 catch
아래 try - catch 구문에서 만약 catch(Exception e)가 맨위로 오게되면 애러가 발생한다.
catch구문의 경우 순서가 있다.
□ finally
ex) 예외에 관계없이 finally값을 출력
□ thorw / thorws
아래 코드에서 class B가 new FileReader에서 발생한 예외를 try-catch로 처리하고있다.
그러나 thorws를 사용하여 예외처리 책임을 다음 사용자에게 떠넘길 수 있다.
- class B에서 classC로 예외를 넘긴 코드
- class C에서 메인 class로 예외를 넘긴 코드
위 코드에서 FileNotFoundException catch를 삭제해도 동작에 이상이없다.
그 이유는 Exception 상속관계를 확인해보면 아래와 같기 때문이다.
□ 여러가지 예외 상황들
- 아래 코드에서 IOException은 Checked Exception으로 try-catch구문이 필수로 들어가야한다.
※ Check / UnChecked Exception 적용 기준
API 쪽에서 예외를 던졌을 때 API 사용자 쪽에서 예외 상황을 복구 할 수 있다면 checked 예외를 사용한다.
checked 예외는 사용자에게 문제를 해결할 기회를 주는 것이면서 예외처리를 강제하는 것이다.
하지만 checked 예외를 너무 자주 사용하면 API 사용자를 몹시 힘들게 할 수 있기 때문에 적정선을 찾는 것이 중요하다.
사용자가 API의 사용방법을 어겨서 발생하는 문제거나 예외 상황이 이미 발생한 시점에서 그냥 프로그램을 종료하는 것이 덜 위험 할 때 unchecked를 사용한다.
출처 : 생활코딩 유튜브 :
https://www.youtube.com/watch?v=WijVClKt5Z8&list=PLuHgQVnccGMCeAy-2-llhw3nWoQKUvQck&index=115
'Java & Spring > Java' 카테고리의 다른 글
생활코딩 - Java(상수와 enum) (0) | 2024.04.17 |
---|---|
생활코딩 - Java(Object 클래스) (0) | 2024.04.16 |
생활코딩 - Java(다형성) (0) | 2024.04.04 |
생활코딩 - Java(abstract,final,interface) (0) | 2024.04.03 |
생활코딩 - Java(접근 제어자) (0) | 2024.04.02 |