생활코딩 - Java(예외 Exception)

2024. 4. 15. 17:06·Java & Spring/Java

□ 예외란?

예외(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구문의 경우 순서가 있다.

try - catch구문도 if - elif와 같이 여러 상황에 대비할 수 있다.

 

□ finally

ex) 예외에 관계없이 finally값을 출력

결과값

□ thorw / thorws

아래 코드에서 class B가 new FileReader에서 발생한 예외를 try-catch로 처리하고있다.

그러나 thorws를 사용하여 예외처리 책임을 다음 사용자에게 떠넘길 수 있다.

 

- class B에서 classC로 예외를 넘긴 코드

 

- class C에서 메인 class로 예외를 넘긴 코드

위 코드에서 FileNotFoundException catch를 삭제해도 동작에 이상이없다.

그 이유는 Exception 상속관계를 확인해보면 아래와 같기 때문이다.

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
'Java & Spring/Java' 카테고리의 다른 글
  • 생활코딩 - Java(상수와 enum)
  • 생활코딩 - Java(Object 클래스)
  • 생활코딩 - Java(다형성)
  • 생활코딩 - Java(abstract,final,interface)
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 이론공부
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • DB
      • AWS
      • CI-CD
      • 웹
      • git & github
      • 구인공고분석
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Java this
    java arrays.copyofrnage()
    자료구조
    java 에라토스테네스의 체
    java two-pointer
    java 멤버
    프로그래머스 java 기초트레이닝
    java 세수의합
    데이터 타입
    java super
    java 메서드
    java
    Java 생성자
    java기초
    개발로드맵
    java 유클리드 호제법
    java enhance switch
    java 제어자
    데이터 크기
    프로그래머스 java 기초 트레이닝
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
생활코딩 - Java(예외 Exception)
상단으로

티스토리툴바