2022/11 6

[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는 예외가 생겨도 무조건 실행되는..

[JAVA] 메소드에 예외 선언하기 (throws)

예외를 처리하는 방법에는 지금까지 배워 try-catch문을 사용하는 것 외에, 예외를 메서드에 선언하는 방법이 있다. 메서드에 예외를 선언하려면, 메서드의 선언부에 키워드 throws를 사용해서 메서드 내에서 발생할 수 있는 예외를 적어주기만 하면 된다. 그리고 예외가 여러 개일 경우에는 쉼표(,)로 구분한다. void method() throws Exception1,Exception2, ... ExceptionN { // 메서드의 내용 } ✅ 참고 예외를 발생시키는 키워드 throw와 예외를 메서드에 선언할 때 쓰이는 throws를 잘 구분하자. 그리고 메서드의 선언부에 예외를 처리함으로써 메서드를 사용하려는 사람이 메서드의 선언부를 보았을 때, 이 메서드를 사용하기 위해서는 어떠한 예외들이 처리되어..

[JAVA] 예외 발생시키기(throw)

자바에서 고의로 예외를 발생시킬 수 있다. 방법은 아래의 순서를 따르면 된다. 1. 면저, 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음 → Exception e = new Exception("고의로 발생시킴"); 2. 키워드 trow를 이용해서 예외를 발생시킨다. → throwe; 두개를 합치면, → thrownew Exception("고의로 발생시킴"); 💎예제💎 public class ExceptionEx9 { public static void main(String[] args) { try { Exception e = new Exception("고의로 발생 시킴"); throw e; } catch (Exception e) { System.out.println("에러 메세지 :..

728x90