프로그래밍 언어/JAVA

[JAVA] 예외 처리 코드(try-catch-finally)

김곰댕 2021. 7. 23. 17:08
728x90

예외 처리 코드

예외가 발생하면 프로그램 종료를 막고, 정상 실행을 유지할 수 있도록 처리하는 코드

- 일반 예외 : 반드시 작성해야 컴파일 됨

- 실행 예외 : 컴파일시 요구하지 않고 경험에 의해서 작성해야 함

try - catch - finally 구문을 이용해서 예외 처리 코드를 작성한다.

- finally는 옵션 (작성해도 좋고 작성하지 않아도 상관 없음)

 

예제)

1. 일반예외처리

package sec03_try_catch_finally;

public class TryCatchFinallyExample 
{
	public static void main(String[] args) 
	{
		//일반 예외 처리
		//예외가 발생헀을 때 프로그램이 종료되는것을 막기 위해 사용
		try 
		{
			Class clazz = Class.forName("java.lang.String"); //Class.forName() : ()안의 클래스를 찾아서 클래스 객체로 만들어 return / 해당 클래스가 없으면 리턴이 불가능
			System.out.println("클래스를 찾았습니다.");
		} 
		catch(ClassNotFoundException e) // try에서 catch() 안의 예외가 발생하면 {} 안이 실행
		{
			System.out.println("클래스가 존재하지 않습니다.");
		}
		finally //예외가 발생하지 않아도 실행하며, 예외가 발생하면 catch가 끝난후에 실행
		{
			System.out.println("프로그램을 안전하게 종료합니다.");
		}
	}
}

출력 결과

2. RunTimeException

package sec03_try_catch_finally;

public class TryCatchFinallyRuntimeExceptionExample 
{
	public static void main(String[] args) 
	{
		String data1 = null;
		String data2 = null;
		
		try
		{
			data1 = args[0];
			data2 = args[1];
		}
		catch(ArrayIndexOutOfBoundsException e)
		{
			System.out.println("실행 매개값의 수가 부족합니다.");
			System.out.println("[실행방법]");
			System.out.println("java TryCatchFinallyRuntimeExceptionExample num1 num2");
			return; //메소드를 종료
		}
		
		try
		{
			int value1 = Integer.parseInt(data1); //문자열을 정수화
			int value2 = Integer.parseInt(data2); //문자열을 정수화
			int result = value1 + value2;
			System.out.println(data1 + "+" + data2 + "=" + result);
		}
		catch(NumberFormatException e)
		{
			System.out.println("숫자로 변환할 수 없습니다.");
		}
		finally
		{
			System.out.println("다시 실행해 주세요");
		}
	}
}

매개값을 1개만 넣은 경우
출력 결과
매개값을 2개 넣은 경우
출력 결과
매개값으로 숫자가 아닌 값을 넣은 경우
출력 결과

728x90