예외 처리 Exception try-catch-finally, throws, 사용자 정의 예외
자바는 프로그램 실행중에 발생할 수 있는 예외 처리문을 제공한다.
자바의 예외 처리는 예외가 발생한 메서드 내에서 직접 처리하는 방법과 예외가 발생한 메소드를 호출한 곳으로 예외 객체를 넘겨주는 방법, 그리고 사용자 정의 예외를 생성하여 처리하는 방법이 있다.
1. 예외(Exception)이 발생한 메소드 내에서 직접 처리 (try-catch-finally
try{
예외 발생 가능성이 있는 문장들;
}catch(예외 타입1 매개변수명){
예외타입1의 예외가 발생할 경우 처리 문장들;
}catch(예외 타입 n 매개변수명){
예외타입 n의 예외가 발생할 경우 처리 문장들;
}finally{
항상 수행할 필요가 있는 문장들;
}
try 블록은 예외가 발생할 가능성이 있는 범위를 지정하는 블록이다. try 블록은 최소한 하나의 catch 블록이 있어야 하며, catch 블록은 try 블록 다음에 위치한다.
catch 블록의 매개변수는 예외 객체가 발생했을 때 참조하는 변수명으로 반드시 java.lang.Throwable 클래스의 하위 클래스 타입으로 선언되어야 한다.
지정된 타입의 예외 객체가 발생하면 try 블록의 나머지 문장들은 수행되지 않고, 자바 가상 머신은 발생한 예외 객체를 발생시키며 발생한 예외 객체 타입이 동일한 catch 블록을 수행한다.
finally 블록은 필수 블록은 아니다.
finally 블록이 사용되면 finally 블록의 내용은 예외 발생 유무나 예외 catch 유무와 상관 없이 무조건 수행된다. 따라서, 데이터베이스나 파일을 사용한 후 닫는 기능과 같이 항상 수행해야 할 필요가 있는 경우에 사용한다.
public class ExceptionTest {
public static void main(String args[]){
String[] name = new String[2];
try{
name[0] = "하이언";
System.out.println("이름 : "+name[0]);
name[1] = "아이유";
System.out.println("이름 : "+name[1]);
name[2] = "윤하";
System.out.println("이름 : "+name[2]);
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("배열 참조 에러 발생");
}catch(Exception e){
System.out.println(e.getMessage());
}finally{
System.out.println("시스템 종료.");
}
}
}
- String[2] 배열을 선언하고, 3번째 배열에 값을 대입할 때, 예외가 발생한다.
- ArrayIndexOutOfBoundsException 이 발생하여 catch에 잡히고 "배열 참조 에러 발생" 이라는 메시지가 출력된다.
- 최종적으로 finally가 실행되며 "시스템 종료." 메시지가 출력된다.
[JAVA] 싱글톤 패턴(Singleton Pattern)이란? (0) | 2020.06.10 |
---|---|
[JAVA] 자주 발생하는 에러(해결방법) (0) | 2020.05.21 |
아파치(Apache)란? (0) | 2020.05.19 |
웹서버 NGINX란? (0) | 2020.05.19 |
[JAVA] Parsing이란 무엇인가? (0) | 2020.05.19 |