본문 바로가기
Language/JAVA

[JAVA]예외 처리 미루기(throws 사용)

by 바까 2020. 7. 2.
반응형

예외처리 미루기
  • throws를 사용하여 예외처리를 미룬다.
  • 메서드 선언부에 throws를 추가한다.
  • 예외가 발생한 메서드에서 예외 처리를 하지 않고, 이 메서드를 호출한 곳에서 예외처리를 한다는 의미
  • main() 메서드에서 throws를 사용하면 가상머신에서 처리된다.

 

[실습]throws로 예외 미루기

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class ThrowsExceptionTest {
	
	public Class loadClass(String fileName, String className) throws FileNotFoundException, ClassNotFoundException {
		
		FileInputStream fis = new FileInputStream(fileName);
		Class c = Class.forName(className);
		
		return c;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//객체 생성
		ThrowsExceptionTest test = new ThrowsExceptionTest();
		try {
			test.loadClass("a.txt", "java.lang.String");
		} catch (FileNotFoundException | ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

try/multi-catch -> 여러 에러를 한번에 처리하기

try/catch -> 예외 상황마다 처리하기


다중 예외 처리시 주의사항

예외가 다양한 경우 가장 최상위 클래스 Exception 클래스에서 예외 처리할 수 있다.

단, Exception 클래스는 모든 예외 클래스의 최상위 클래스 이므로 가장  마지막블록에 위치해야 한다.


[실습] 여러 catch문 사용하기

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class MultiCatchTest {
	
	public Class loadClass(String fileName, String className) 
			throws FileNotFoundException, ClassNotFoundException {
		
		FileInputStream fis = new FileInputStream(fileName);
		Class c = Class.forName(className);
		
		return c;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		MultiCatchTest test = new MultiCatchTest();
		
		try {
			test.loadClass("a.text", "java.lang.String");
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}

}

 

반응형

댓글