Recent Posts
Recent Comments
Link
11-21 14:38
Today
Total
관리 메뉴

삶 가운데 남긴 기록 AACII.TISTORY.COM

예외 처리 본문

DEV&OPS/Java

예외 처리

ALEPH.GEM 2022. 4. 6. 13:14

하드웨어 오동작이나 고장으로 인해 프로그램이 오류가 나는것을 에러라고 부르고

예외는 사용자의 잘못된 조작이나 개발자의 잘못된 코딩으로 인해 오류가 나는 것을 말합니다.

 

try catch finally

public class TryCatchFinally {
	public static void main(String[] args) {
		
		try {
			String data1 = null;
			String data2 = null;
			data1 = args[0];
			data2 = args[1];
			int value1 = Integer.parseInt(data1);
			int value2 = Integer.parseInt(data2);
			int result = value1 + value2;
			System.out.println(result);
		}catch(ArrayIndexOutOfBoundsException ae) {
			System.out.println("실행 인수값의 수가 부족합니다.");
		}catch(NumberFormatException ne) {
			System.out.println("정수 변환에 실패했습니다.");
		}catch(Exception e) {
			//Exception 클래스는 모든 Exception 클래스들의 부모이기 때문에 다중 catch문에서는 제일 마지막에 배치 해야 함.
			e.printStackTrace();
		}finally {
			System.out.println("다시 실행하세요.");
		}
		
	}
}

 

멀티 catch

public class MultiCatch {
	public static void main(String[] args) {
		
		try {
			String data1 = null;
			String data2 = null;
			data1 = args[0];
			data2 = args[1];
			int value1 = Integer.parseInt(data1);
			int value2 = Integer.parseInt(data2);
			int result = value1 + value2;
			System.out.println(result);
		}catch(ArrayIndexOutOfBoundsException | NumberFormatException e1) {
			System.out.println("실행 인수값의 수가 부족하거나 정수변환에 실패했습니다.");
		}catch(Exception e) {
			//Exception 클래스는 모든 Exception 클래스들의 부모이기 때문에 다중 catch문에서는 제일 마지막에 배치 해야 함.
			e.printStackTrace();
		}finally {
			System.out.println("다시 실행하세요.");
		}
		
	}
}

 

자동 리소스 닫기

jdk7부터 try-with-resources 를 지원합니다. 

이전 버전에는 finally 구분에서 열었던 리소스(입출력스트림,소켓,채널,DB연결 등)들을 일일이 close() 작업을 수동으로 해줬지만 이를 자동화 시킨 것입니다.

try-with-resources를 사용하기 위해서는 java.lang.AutoCloseable 인터페이스를 구현해야지 사용할 수 있습니다.

public class FileInput implements AutoCloseable {
	private String file;
	
	public FileInput(String file) {
		this.file = file;
	}
	
	public void read() {
		System.out.println(file+" 을 읽습니다.");
	}

	@Override
	public void close() throws Exception {
		System.out.println(file+ "을 닫습니다.");
	}

}
public class TryWithResourceEx {

	public static void main(String[] args) {
		try(FileInput fis = new FileInput("file.txt")){
			fis.read();
			throw new Exception();
		}catch(Exception e) {
			System.out.println("예외가 발생했습니다.");
		}
	}

}

 

throws

throws 키워드를 통해 호출한 곳에 예외 처리를 넘길 수 있습니다.

public class ThrowsEx {
	public static void main(String[] args) {
		try {
			findClass();
		}catch(ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	public static void findClass() throws ClassNotFoundException{
		Class cl = Class.forName("java.lang.String2");
	}
}

 

 

 

 

 

 

 

 

 

 

 

728x90

'DEV&OPS > Java' 카테고리의 다른 글

java.util.Objects 클래스  (0) 2022.04.07
자바 API , Object 클래스  (0) 2022.04.07
익명 객체  (0) 2022.04.05
중첩 클래스 중첩 인터페이스  (0) 2022.04.05
추상 클래스와 인터페이스  (0) 2022.03.31