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

  • 최근 글

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

티스토리툴바