개발 공부122 다중 catch / 멀티 catch try 블록 내부에는 다양한 종류의 예외가 발생할 수 있는데, 이런 경우 다중 catch 블록을 작성할 수 있다. catch 블록의 예외 클래스 타입은 try 블록에서 발생된 예외의 종류를 말하는데, try 블록에서 해당 타입의 예외가 발생하면 catch 블록을 실행하도록 되어 있다. catch 블록이 여러 개라 할지라도 단 하나의 catch 블록만 실행된다. (try 블록에서 동시 다발적으로 예외가 발생하지 않고, 하나의 예외가 발생하면 즉시 실행을 멈추고 해당 catch 블록으로 이동하기 때문) 다중 catch 코드 public class CatchByExceptionKindExample { public static void main(String[] args) { try { String data1 =.. 2021. 6. 18. 예외 처리 코드(try-catch-finally 블록) 프로그램에서 예외가 발생했을 경우 프로그램의 갑작스러운 종료를 막고, 정상 실행을 유지할 수 있도록 처리하는 코드를 예외 처리 코드라고 한다. try-catch-finally 블록은 생성자 내부와 메소드 내부에서 작성되어 일반 예외와 샐행 예외가 발생할 경우 예외 처리를 할 수 있도록 해준다. try-catch-finally 블록 try 블록 - 예외 발생 가능 코드 작성 catch 블록 - 예외 처리 코드 작성 finally 블록 - 실행문 (항상 실행, 생략 가능) try 블록의 코드가 예외 발생 없이 정상 실행되면 catch 블록의 코드는 실행되지 않고, finally 블록의 코드를 실행한다. 만약 try 블록에서 예외가 발생하면 즉시 실행을 멈추고 catch 블록으로 이동하여 예외 처리 코드를 실.. 2021. 6. 18. 실행 예외 (RuntimeException) 종류 실행 예외는 자바 컴파일러가 체크하지 않기 때문에 개발자가 직접 코드를 작성해줘야 한다. 자주 발생되는 실행 예외 목록) 1. NullPointerException 객체 참조가 없는 상태, 즉 null 값을 갖는 참조 변수로 객체 접근 연산자인 도트(.)를 사용했을 때 발생 public class NullPointerExceptionExample { public static void main(String[] args) { String data = null; System.out.println(data.toString()); } } 2. ArrayIndexOutOfBoundsException 배열에서 인덱스 범위를 초과하여 사용할 경우 발생 (또는 해당 인덱스의 데이터가 없을 경우에도 발생) public c.. 2021. 6. 18. 예외(Exception) 예외의 종류 일반(컴파일러 체크) 예외(Exception) : 예외 처리 코드가 없다면 컴파일이 되지 않는 예외 (컴파일 과정에서 예외 처리 코드 체크) 실행 예외 (RuntimeException) : 예외 처리 코드를 생략하더라도 컴파일이 되는 예외 (예외 처리 코드 작성 필요) 예외 클래스 자바에서는 예외를 클래스로 관리한다. JVM은 프로그램을 실행하는 도중에 예외게 발생하면 해당 예외 클래스로 객체를 생성하고, 예외 처리 코드에서 예외 객체를 이용할 수 있도록 해준다. 모든 예외 클래스들은 java.lang.Exception 클래스를 상속받는다. 이때 일반 예외는 Exception만 상속 받고, 실행 예외는 RuntimeException도 상속 받는다. (JVM은 RuntimeException 상.. 2021. 6. 18. 디폴트 메소드와 인터페이스 확장(java8부터 허용) 디폴트 메소드는 인터페이스에 선언된 인스턴스 메소드이기 때문에 구현 객체가 있어야 사용할 수 있다. 디폴트 메소드의 필요성 기존 인터페이스를 확장해서 새로운 기능을 추가할 수 있다. 만약 기존 인터페이스에 추상 메소드를 추가하면 기존 구현 클래스들이 모두 에러가 난다. 하지만 디폴트 메소드는 추가하더라도 구현 클래스들은 문제 없이 사용 가능하고, 디폴트 메소드를 재정의하는 새로운 구현 클래스를 만들 수 있다. 예제) public interface MyInterface { public void method1(); // 디폴트 메소드는 // 구현 클래스에 실체 메소드를 작성할 필요가 없기 때문에 // 인터페이스를 확장하여 재정의함으로써 새로운 기능을 추가할 수 있다. public default void me.. 2021. 6. 11. 인터페이스 상속 인터페이스는 클래스와 달리 다중 상속을 허용한다. public interface 하위인터페이스 extends 상위인터페이스1, 상위인터페이스2 { ... } 하위 인터페이스의 구현 클래스는 하위 인터페이스의 메소드뿐만 아니라 상위클래스의 모든 추상 메소드에 대한 실체 메소드를 가지고 있어야 한다. 그렇기 때문에 구현 클래스로부터 객체를 생성 한 후 하위 및 상위 인터페이스 타입으로 변환이 가능하다. 하위인터페이스 변수 = new 구현클래스(); 상위인터페이스1 변수 = new 구현클래스(); 상위인터페이스2 변수 = new 구현클래스(); 하위 인터페이스로 타입 변환 되면 상/하위 인터페이스에 모든 메소드를 사용할 수 있으나, 상위 인터페이스로 타입 변환 되면 상위 인터페이스에 선언된 메소드만 사용 가능.. 2021. 6. 11. 이전 1 ··· 15 16 17 18 19 20 21 다음