ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • try/catch/finally
    TIL(Today I Learned) 2022. 10. 2. 21:00

    try/catch란?

    try/catch는 주로 예외 처리를 할 때 사용합니다.

    일반 예외와 실행 예외가 있습니다.

    프로그램이 예기치 못한 에러로 종료되는 것을 사전에 방지하기 위해 사용합니다.

     

    일반 예외란?

    자바 컴파일러는 소스 파일을 컴파일할 때 일반 예외가 발생할 가능성이 있는 코드를 발견하면 컴파올 오류를 발생시켜 개발자로 하여금 '강제적'으로 예외 처리 코드를 작성하라고 요구합니다.

     

    예시 코드

    public class NormalException{
    	public static void main(String[] args){
        	try{
            	Class clazz = Class.forName("java.lang.String2");
            }catch(ClassNotFoundException e){
    			e.printStackTrace();
            	System.out.println("클래스가 존재하지 않습니다.)
            }
        }
    }

     

     

    output

    (java.lang.String2는 존재하지 않는 클래스이기 때문에 아래와 같이 출력됩니다.)

    클래스가 존재하지 않습니다.

     

    실행 예외란?

    runtime에 예외 처리를 하는 방식입니다.

    컴파일러가 체크해주지 않기 때문에 개발자의 경험을 기반으로 예외 처리할 코드에 적용합니다.

     

    예시 코드

    public class RuntimeException{
    	public static void main(String[] args){
        	
            int name1[] = new int[5];
            String[3] name2 = {"1", "0.22", "3"}; 
            
            try{
            	name1[3] = 2; //성공
            	name1[6] = 3; //실패, 배열의 크기보다 크기 때문 
            }catch(ArrayIndexOutOfBoundsException e){
            	e.printStackTrace();
                System.out.println("배열의 범위를 초과하여 원소를 접근하였습니다.");
            }
            
    		try{
            	for(int i = 0; i < name.length; i++{
            		int intName1 = Integer.parseInt("name1[i]");
                    System.out.println("정수로 변환된 값은 : " + intName1);
                }
            }catch(NumberFormatException e){
            	e.printStatckTrace();
            	System.out.println(name1[i] + "는 정수로 변환할 수 없습니다.");
            }
        }
    }

    output

    배열의 범위를 초과하여 원소를 접근하였습니다.
    0.22는 정수로 변환할 수 없습니다.

     

    finally란?

    필수가 아닌 옵션입니다.

    예외 발생 여부와 상관 없이 항상 실행 시킬 내용이 있을 경우 사용합니다.

    'TIL(Today I Learned)' 카테고리의 다른 글

    Vector vs ArrayList  (0) 2022.10.03
    HTTP Method  (0) 2022.09.30
    추상화(Abstract)  (0) 2022.09.28
    모듈/모듈화  (0) 2022.09.27
    자바 컴파일 흐름  (0) 2022.09.26
Designed by Tistory.