삶 가운데 남긴 기록 AACII.TISTORY.COM
예외 처리 본문
하드웨어 오동작이나 고장으로 인해 프로그램이 오류가 나는것을 에러라고 부르고
예외는 사용자의 잘못된 조작이나 개발자의 잘못된 코딩으로 인해 오류가 나는 것을 말합니다.
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 |