2022/11/22 4

[JAVA] 예외 던지기(exception re-throwing) / 연결된 예외(chained exception)

예외 던지기(exception re-throwing) 란? 한 메서드에서 발생할 수 있는 예외가 여럿인 경우 몇 개는 try-catch문을 통해서 메서드 내에서 자체적으로 처리하고, 그 나머지는 선언부에 지정하여 호출한 메서드에서 처리하도록 함으로써, 양쪽에서 나눠서 처리되도록 할 수 있다. 그리고 단 하나의 예외에 대해서도 예외가 발생한 메서드와 호출한 메서드, 양쪽에서 처리하도록 할 수 있다. 이것은 예외를 처리한 후에 인위적으로 다시 발생시키는 방법을 통해서 가능한데, 이것을 예외 되던지기(exception re-throwing)라고 한다. 연결된 예외(chained exception) 란? 한 예외가 다른 예외를 발생시킬 수도 있다. A가 B의 예외를 발생시킨다면, A를 B의 ‘원인 예외(caus..

[JAVA] 사용자정의 예외 만들기

말 그대로 예외는 프로그래머가 기존의 정의된 예외 클래스 외에 필요에 따라 새로운 예외 클래스를 정의하여 사용할 수 있다. 🙄어떻게 내 마음대로 예외를 만들 수 있는 걸까? → 우리가 이때까지 배운 상속을 통해서 사용자 정의를 만들 수 있다. Exception클래스 또는 RuntimeException클래스로부터 상속받아 클래스를 만들기도 하고, 필요에 따라 알맞은 예외 클래스를 선택하여 상속받아 만들 수 있다. 말로만 보면 알지 못하니 예를 들어보면! class MyException extends Exception { MyException(String msg) { // 문자열을 메개변수로 받는 생성자 super(msg); // 부모인 Exception 클래스의 생성자를 호출 } } Exception 클래..

[JAVA] 자동 자원 반환 try-with-resources

JDK1.7부터 try-catch-resources문이라는 try-catch문의 변형이 새로 추가되었다. 이 구문은 입출력(I/O)과 관련된 클래스를 사용할 때 유용하다. 주로 입출력에 사용되는 클래스 중에서는 사용한 후에 꼭 닫아 줘야 하는 것들이 있다. 그래서 사용했던 자원(resources)이 반환되기 때문이다. 🙄하지만 그렇게 사용하지 않고 finally를 사용하여 닫아주면 안 되는 건가? try{ fis = new FileInputStream("score.dat"); dis = new DataInputStream(fis); }catch(IOException ie){ ie.printStackTrace(); } finally { dis.close(); } 위 코드처럼 할 경우 별 문제가 없어 보인다..

[JAVA] finally 블럭

finally 블록은 예외의 발생 여부에 상관없이 실행되어야 할 코드를 포함시킬 목적으로 사용된다. try-catch문의 끝에 선택적으로 덧붙여 사용할 수 있으며, try-catch-finally 순서로 구성된다. try{ // 예외가 발생할 가능성이 있는 문장들을 넣는다. }catch(Exception e1){ // 예외처리를 위한 문장을 적는다. }finally{ // 예외의 발생여부에 관계없이 항상 수행되어야하는 문장들을 넣는다. // finally 블럭은 try-catch 문의 마지막에 위치해야한다. } 예외 발생한 경우 : try → catch → finally 순으로 진행 예외가 발생하지 않은 경우 : try → finally 순으로 진행 ✅ 정리 finally는 예외가 생겨도 무조건 실행되는..

728x90