목록이것이 자바다/11 예외 처리 (7)
충분히 쌓여가는
자바에서 제공하는 표준 예외뿐만 아니라 사용자 정의 예외를 직접 코드에서 발생시키려면 throw 키워드와 함께 예외 객체를 제공하면 된다 thorw new Exception() thorw new RuntimeException(); thorw new InsufficientException(); 예외의 원인에 해당하는 메시지를 제공하고 싶다면 생성자 매개값으로 전달한다 thorw new Exception("예외메시지") thorw new RuntimeException("예외메시지"); thorw new InsufficientException("예외메시지"); throw된 예외는 직접 try-catch 블록으로 예외를 처리할 수 있지만 void method() { try { ... throw new Excep..
사용자 정의 예외 컴파일러가 체크하는 일반 예외로 선언할 수도 있고, 컴파일러가 체크하지 않는 실행 예외로 선언할 수도 있다 일반 예외는 Exception의 자식 클래스로 선언하고, 실행 예외는 RuntimeException의 자식 클래스로 선언한다 사용자 정의 예외 클래스에는 기본 생성자와 예외 메시지를 입력받는 생성자를 선언해 준다 pulbic class XXXException extends[ Exception | RuntimeException] { pulbic XXXException() { // 기본 생성자 } pulbic XXXException(String message) { // 예외 메시지를 입력받는 생성자 super(message); } } 예외 메시지는 부모 생성자 매개값으로 넘겨주는데, ..
throws 메소드 내부에서 예외가 발생할 때 try-catch 블록으로 예외를 처리하는 것이 기본이지만, 메소드를 호출한 곳으로 예외를 떠넘길 수도 있고 이때 사용하는 키워드가 throws이다 리턴타입 메소드명(매개변수, ...) throws 예외클래스1, 예외클래스2, ... { } throws 키워드가 붙어 있는 메소드에서 해당 예외를 처리하지 않고 떠넘겼기 때문에 이 메소드를 호출하는 곳에서 예외를 받아 처리해야 함 ClassNotFoundException을 throws하는 method2()의 예외를 method1()에서 호출할 때 처리하고 있다 public void method1() { try { method2(); } catch(ClassNotFoundException e) { System.o..
다중 catch try 블록에는 다양한 종류의 예외가 발생할 수 있다 예외에 따라 예외 처리 코드를 다르게 작성할 수 있다 catch 블록이 여러 개라 할지라도 catch 블록은 단 하나만 실행된다 : try 블록에서 동시 다발적으로 예외가 발생하지 않으며, 하나의 예외가 발생하면 즉시 실행을 멈추고 해당 catch 블록으로 이동하기 때문 예제 배열의 인덱스가 초과되었을 경우 발생하는 ArrayIndexOutOfBoundsException과 숫자 타입이 아닐 때 발생하는 NumberFormatException을 각각 다르게 예외 처리한다 package ch11.sec02.exam03; import java.util.Iterator; public class ExceptionHandlingExample { ..