ID_DI
DI's study notes
ID_DI
전체 방문자
오늘
어제
  • 분류 전체보기 (85)
    • Deep-Learning (3)
      • CNN (2)
      • NLP (1)
    • Data_Python (6)
      • Numpy (0)
      • Matplotlib (4)
    • Python (8)
      • Python Algorithm (6)
    • Java (36)
      • Java(base) (33)
      • Java practice(base) (2)
    • Git (12)
    • Algorithm (7)
    • etc (7)
    • linux (1)
    • DeskSetup (0)
    • TIL_모각코 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Python
  • 자바
  • matplotlib
  • java base
  • staged
  • binarySearch
  • Github
  • 파이썬
  • git
  • 알고리즘
  • java.net
  • string to int
  • git add.
  • 정렬
  • 합병정렬
  • README.md
  • java
  • 커밋
  • java.lang
  • java 기초

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ID_DI

DI's study notes

[Java] 예외처리 try-catch-finally / throw throws 차이점 및 예제
Java/Java(base)

[Java] 예외처리 try-catch-finally / throw throws 차이점 및 예제

2021. 12. 1. 23:39

예외처리

  • 에러 : 심각한 오류
  • 예외 : 덜 심각한 오류(객체)

try ~ catch ~ finally 예외처리문

try{
    예외가 발생할 수 있는 문장
}
catch(예외클래스명 객체명){
    예외 발생시 수행할 문장
}
...
finally{
    예외 발생 유무에 상관없이 무조건 실행할 문장
}

예외라는 틀(class)을 잡아놓은 객체가 있다

Exception class

  • 모든 예외들의 부모클래스
    • 모든 예외들은 Exception class의 자식클래스이기 때문에 자동으로 업캐스팅 upcasting 이 이루어짐
  • 어떤 예외가 발생하든지 Exception 타입으로 잡을 수 있다.
  • 어떤 예외가 발생할지 모를 떄 찾아내는 역할
try{
    예외가 발생할 수 있는 문장
}
catch(Exception e){
    System.out.println(e); //예외처리 클래스를 출력
}

throws

예외의 간단한 형태, 예외처리가 이미 구현되 있을 때 보통 사용
  • 메소드 선언부 내부에서 예외 발생시 무시(떠넘기기)
  • 예외처리를 메소드 호출한 곳에서 하겠다는 뜻
    • 메소드가 호출되었을 때, 예외처리를 해야하는 상황에서 호출당한 곳으로 예외처리를 하겠다는 뜻
  • 절대 처리용으로 사용하지 않는다.
리턴타입 메소드명() throws 예외1, 예외2, ...{
    예외1, 예외2, ... 무시하는 구역
}

throw

예외를 한번 더 처리하기 위해서 사용
  • 예외를 강제로 발생시키는 것
throw new 발생시킬예외 생성자();

throws throw 사용한 형변환 예제 Ex)

public class ExceptionTest{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String strNum1 = sc.nextLine();
        String strNum2 = sc.nextLine();
        try{
            Test test = new Test(strNum1, strNum2);
            test.sum();
        }
        catch(NumberFormatException Ne){
            System.out.println("숫자를 입력해주세요");
        }
        sc.close();
    }
}

class Test{
    String a;
    String b;

    public Test(String a, String b) {
        this.a = a;
        this.b = b;
    }

    public void sum() throws NumberFormatException{
        try{
            int sum = Integer.parseInt(a) + Integer.parseInt(b);
            //문자로 받은 a,b를 숫자로 변환하여 더한다.
            System.out.println("문자로 입력받은 " +a+ "와 " +b+ "의 합은" +sum+ "입니다." );
        }
        catch(NumberFormatException Ne){
            System.out.println("숫자형 문자가 아닙니다. 형변환을 할 수 없습니다.");
            throw Ne;
        }
    }
}
결과:
a
s
숫자형 문자가 아닙니다. 형변환을 할 수 없습니다.
숫자를 입력해주세요

'Java > Java(base)' 카테고리의 다른 글

[Java] @Annotation, 어노테이션  (0) 2021.12.01
[Java] Java API(Application Programming Interface)  (0) 2021.12.01
[Java] 내부 클래스 Inner class , 익명 클래스 Anonymous Inner class  (0) 2021.12.01
[Java] 인터페이스 interface, 다중 상속, 마크 인터페이스  (0) 2021.12.01
[Java] 추상클래스 abstract class, final  (0) 2021.12.01
    'Java/Java(base)' 카테고리의 다른 글
    • [Java] @Annotation, 어노테이션
    • [Java] Java API(Application Programming Interface)
    • [Java] 내부 클래스 Inner class , 익명 클래스 Anonymous Inner class
    • [Java] 인터페이스 interface, 다중 상속, 마크 인터페이스
    ID_DI
    ID_DI
    Computer Vision

    티스토리툴바