Finally 구문
package chap_11;
public class _04_Finally {
public static void main(String[] args) {
try {
System.out.println("택시의 문을 연다.");
throw new Exception("휴무 택시");
// System.out.println("택시에 탑승한다.");
} catch (Exception e) {
System.out.println("!! 문제 발생 : " + e.getMessage());
} finally {
System.out.println("택시의 문을 닫는다.");
}
// try + catch(s)
// try + catch(s) + finally
// try + finally
System.out.println("-------------------");
try {
System.out.println(3 / 0);
} finally {
System.out.println("프로그램 정상 종료");
}
}
}
Try With Resources
package chap_11;
import java.io.BufferedWriter;
public class _05_TryWithResources {
public static void main(String[] args) {
MyFileWriter writer1 = null;
try {
writer1 = new MyFileWriter();
writer1.write("아이스크림이 먹고 싶어요");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
writer1.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
System.out.println("---------------------");
try (MyFileWriter writer2 = new MyFileWriter()) {
writer2.write("빵이 먹고 싶어요");
} catch (Exception e) {
e.printStackTrace();
}
BufferedWriter bw = null;
}
}
class MyFileWriter implements AutoCloseable {
@Override
public void close() throws Exception {
System.out.println("파일을 정상적으로 닫습니다.");
}
public void write(String line) {
System.out.println("파일에 내용을 입력합니다.");
System.out.println("입력 내용 : " + line);
}
}
*AutoCloseable 인터페이스를 사용함으로써 close 메쏘드 사용
사용자 정의 예외
public class _06_CustomException {
public static void main(String[] args) {
// 사용자 정의 예외
int age = 17; // 만 17세
try {
if (age < 19) {
// System.out.println("만 19세 미만에게는 판매하지 않습니다.");
throw new AgeLessThan19Exception("만 19세 미만에게는 판매하지 않습니다.");
} else {
System.out.println("주문하신 상품 여기 있습니다.");
}
} catch (AgeLessThan19Exception e) {
System.out.println("조금 더 성장한 뒤에 오세요.");
} catch (Exception e) {
System.out.println("모든 예외를 처리합니다.");
}
}
}
class AgeLessThan19Exception extends Exception {
public AgeLessThan19Exception(String message) {
super(message);
}
}
예외 처리 미루기 (Throws)
public class _07_Throws {
public static void main(String[] args) {
try {
writeFile();
} catch (IOException e) {
e.printStackTrace();
System.out.println("메인 메소드에서 해결할게요.");
}
}
public static void writeFile() throws IOException {
// try {
// FileWriter writer = new FileWriter("test.txt");
// throw new IOException("파일 쓰기에 실패했어요!!");
// } catch (IOException e) {
// e.printStackTrace();
// System.out.println("writeFile 메소드 내에서 자체 해결했어요.");
// }
FileWriter writer = new FileWriter("test.txt");
throw new IOException("파일 쓰기에 실패했어요!!");
}
}
'인강 보습 (인프런,유데미,패스트캠퍼스) > 나도코딩의 자바 기본편' 카테고리의 다른 글
쓰레드 (2) - 다중쓰레드, 동기화 (0) | 2023.01.20 |
---|---|
쓰레드 - (1) Thread, Runnable, Join (0) | 2023.01.19 |
예외처리 - (1) Try Catch , Catch구문, Throw, (0) | 2023.01.19 |
익명 클래스, 람다와 스트림 - (2) 함수형 인터페이스, 스트림 (0) | 2023.01.19 |
익명 클래스, 람다와 스트림 - (1) 익명클래스, 람다 (0) | 2023.01.19 |