package Demo1;

import java.io.FileWriter;
import java.io.IOException;

public class ExceptionDemo1 {
	
	public static void main(String[] args) {
		// 일반 예외가 발생하는 경우 예외 처리하기
		try {
		System.out.println("try 블록의 수행문 시작");
		FileWriter writer = new FileWriter("sample.txt");
		writer.write("연습");
		writer.flush();
		writer.close();
		System.out.println("try 블록의 수행문 종료");
		} catch (IOException e) {
			System.out.println("파일 생성 혹은 파일 기록 중 오류가 발생하였습니다.");
			System.out.println(e);
			System.out.println("catch 블록의 수행문");
		
		} finally {
			System.out.println("finally 블록의 수행문");
		}
	}
}
package Demo1;

import java.io.FileWriter;
import java.io.IOException;

public class ExceptionDemo2 {

	public static void main(String[] args) throws IOException {
		
		FileWriter writer = new FileWriter("sample.txt");
		writer.write("연습");
		writer.flush();
		writer.close();
	}
}
package Demo1;

import java.io.FileWriter;
import java.io.IOException;

public class ExceptionDemo3 {

	public static void method1() throws IOException {
		FileWriter writer = new FileWriter("sample.txt");
		writer.write("예외 떠넘기기");
		writer.flush();	
		writer.close();
	}
	public static void method2() throws ClassNotFoundException {
		Class.forName("demo1.ExceptionDemo1");	// demo1.ExcpetionDemo1 설계도를 메모리에 로딩시킨다.
	}
	
	// 메소드1과 2가 처리를 위임한 예외를 다시 떠넘긴다.
	public static void method3() throws IOException, ClassNotFoundException {
		ExceptionDemo3.method1();
		ExceptionDemo3.method2();
	}
	//메소드 1과 2가 처리를 위임한 예외를 try ~ catch로 처리한다.
	public static void method4() {
		try {
			ExceptionDemo3.method1();
			ExceptionDemo3.method2();
			
		}
		catch (IOException e) {
			
		} catch (ClassNotFoundException e) {
			
		}
	}
	
	
	//메소드 1과 2가 처리를 위임한 예외를 try ~ catch로 처리한다.
	public static void method5() {
		try {
			ExceptionDemo3.method1();
			ExceptionDemo3.method2();
			
		}
		catch (IOException | ClassNotFoundException e) {
			
		} 
	}


	
	//메소드 1과 2가 처리를 위임한 예외를 try ~ catch로 처리한다.
	public static void method6() {
		try {
			ExceptionDemo3.method1();
			ExceptionDemo3.method2();
			
		}
		catch (Exception e) {	// Exception 타입의 변수로 선언하면 try블록에서 발생되는 모든 예외를
								// 캐치할 수 있다.				
		} 
	}

	public static void method7() {
		try {
			ExceptionDemo3.method1();
			ExceptionDemo3.method2();
			
			
		} catch (ClassNotFoundException e) {
			
		} catch (IOException e) {
		} catch (Exception e) {
		}	// 마지막 catch에서는 Exception 타입의 변수로 선언함으로써 미처 예상하지 못했던 예외도 캐치를 할 수 있도록 한다.
	}

	
	public static void main(String[] args) {
		
	}
}
package Demo1;

import java.io.FileWriter;
import java.io.IOException;

public class exceptionDemo4 {
	public static void method1() {
		 try {
			 FileWriter writer = new FileWriter("sample.txt");
			 writer.write("예외바꾸기");
			 writer.flush();
			 writer.close();
			 
		 } catch (IOException e) {
			 
		 }
	}
	
	public static void method2() {
		
	}
	
	public static void main(String[] args) {
		
	}
}
package Demo1;

import java.io.FileWriter;
import java.io.IOException;

public class HTAException extends Exception {
	public static void method1() throws HTAException {
		try {
			FileWriter writer = new FileWriter("sample.txt");
			writer.write("예외바꾸기");
			writer.flush();
			writer.close();
		} catch (IOException e) {
			throw new HTAException();	// throw 예외 발생 시키기
		}
	}
	public static void method2() throws HTAException {	// 3. 2번에서 발생시킨 예외를 떠넘긴다.
		try {
			Class.forName("demo1.HTAException");
			
		} catch (ClassNotFoundException e) {	// 1. try 블록에서 발생한 예외를 캐치
			throw new HTAException();			// 2. HTAException 예외를 생성해서 발생시킴
		}
	}
	
	public static void main(String[] args) {
		try {
			method1();
			method2();
		} catch (HTAException e) {	// 4. 처리를 위임받는 예외의 종류가 HTAException 으로 줄어들게 된다.
		}
	}
}

 

'자바 > exception' 카테고리의 다른 글

demo4  (0) 2019.06.10
demo3  (0) 2019.06.10
demo2  (0) 2019.06.10

+ Recent posts