try 문에서 exception 발생 시, 이에 맞는 catch 문으로 들어감.
finally 는 try / catch 문 실행 이후 무조건 실행되는 코드 (주로, connection close 에 사용됨)
강제로 Exception 만든 후, throw 를 통해 발생 가능
public class Practice2 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		ArrayList<Integer> arr = new ArrayList<>();
		
		//System.out.println(arr.get(1));
		try {
        	//강제로 exception 생성
			//Exception e = new Exception();
			//throw e;
			System.out.println(arr.get(1));
			System.out.println("well tried");
		} catch (IndexOutOfBoundsException e) {
			// TODO: handle exception
			e.printStackTrace();
			System.out.println("IndexOutOfBoundsException : " + e);
			//throw e;
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			System.out.println("Other Exception : " + e);
			//throw e;
		}
		finally {
			System.out.println("end");
		}
		
		System.out.println("out of try block");
	}
}
-----------
IndexOutOfBoundsException : java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
end
out of try block
java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
	at java.util.ArrayList.rangeCheck(Unknown Source)
	at java.util.ArrayList.get(Unknown Source)
	at Practice2.main(Practice2.java:15)
try / catch 문을 사용하지 않았을 경우,
exception 이 발생한 이후 코드 실행 불가.
public class Practice2 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		ArrayList<Integer> arr = new ArrayList<>();
		
		System.out.println(arr.get(1));
		System.out.println("well tried");
		
		System.out.println("out of try block");
	}
}
-------------
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
	at java.util.ArrayList.rangeCheck(Unknown Source)
	at java.util.ArrayList.get(Unknown Source)
	at Practice2.main(Practice2.java:11)반응형
    
    
    
  'JAVA' 카테고리의 다른 글
| [JAVA] 싱글톤 (singleton) 패턴 (0) | 2022.02.19 | 
|---|---|
| [Springboot] lombok 설치 및 STS 연동 (0) | 2022.02.09 | 
| [JAVA] 다형성(polymorphism) (0) | 2022.01.17 |