성장 일기/쌍용교육센터 / / 2023. 1. 6. 17:54

0106/예외 처리, Stream

throws

throws는 메서드 안에서 발생된 예외를 던지는 것이다.

메서드를 호출한 곳에서 예외를 처리하고 업무처리 코드와 예외처리 코드를 분리할 수 있다.

메서드 안에서 예외가 발생하면 실행을 멈추고 호출한 곳의 catch로 이동한다.

 

문법은 아래와 같다.

접근지정자 반환형 메서드명(매개변수) throws 예외처리클래스{

}

문법을 적용한 예시는 아래와 같다.

	public void work(String className) throws ClassNotFoundException {
		int i = 0;
		Class.forName(className);
		// ClassNotFoundException이 발생하지만 메서드에 정의된
		// throw에 의해 try~catch를 하지 않아도 된다.
		System.out.println("로딩성공");
	}

	public void useWork() {

		try {
			work("java.lang.Integer");
			// 예외가 발생하지 않았을 때의 코드 정의
		} catch (ClassNotFoundException e) {
			// 예외가 발생했을 때의 코드 정의
			e.printStackTrace();
		}
	}

 

 

throw

throw는 예외를 강제로 발생시킬 때 사용된다.

발생된 예외는 try~catch 바로 잡던가 throws 날려야 한다.

사용자 정의 예외처리 클래스와 주로 사용된다.

 

문법으로는 아래와 같다.

throw new 예외처리클래스();
throw new 예외처리클래스("예외발생 시 출력할 메시지");

문법을 적용한 예는 아래와 같다.

	public void test() throws Exception {
		if (true) { // 특정상황에서 예외가 강제로 발생되어야 한다.
			throw new Exception("예외 발생 시 출력할 메시지");
		}
	}

	public void useTest() {
		try {
			test();
		} catch (Exception e) {
			// 예외처리 코드
		}
	}

 

예외처리 순서는 아래와 같고 일반적인 순차적인 순서와는 다르다.

1. throw 예외 발생

2. throws 예외 날림

3. try~catch로 예외처리

 

사용자정의 예외처리 클래스

개발자가 개발하는 업무에 맞는 예외처리클래스를 제작하여 사용하는 것이다.

작성법은 아래와 같다.

//1. Exception을 상속 받는다. 컴파일 or 런타임 예외
public class MyException extends Exception {

//2. 예외발생 시 상황에 맞는 메시지를 전달할 생성자를 만든다.
	public MyException() {
		super("예외 발생 시 출력될 메시지");
	}

	public MyException(String msg) {
		super(msg);
	}

 

IO(Input / Output) Stream

JVM 외부의 데이터를 읽어 들이거나(입력 스트림)

JVM 내부의 데이터를 JVM 외부로 내보낼 때(출력 스트림) 사용하는 클래스들이다.

 

java.io 패키지에서 관련 클래스들을 제공하고 단방향 스트림이다.

InputStream은 입력에 관련된 클래스이고, OutputStream은 출력에 관련된 클래스이다.

8/16 비트 크기에 따라 스트림이 구분된다.

8bit stream(Byte stream)는 모든 데이터를 읽고 쓸 수 있지만

16bit stream(String stream) 문자열 데이터만 읽고 쓸 수 있다.

 

입력과 출력은 시스템, 파일, 네트워크에 3가지 중에 하나로 입력이 되어

시스템, 파일, 네트워크에 3가지 중에 하나로 출력된다.

 

 

8bit Stream

byte기반 스트림이고 모든 데이터를 읽고 쓸 수 있다.

종류는 입력으론 InputStream, 출력으론 OutputStream으로 나눠진다.

 

16bit Stream

문자열기반 스트림이고 문자열 데이터만 읽고 쓸 수 있다.

종류는 입력으론 Reader, 출력으론 Writer으로 나눠진다.

 

Stream은 성능 향상 및 기능 향상을 위해 결합이 가능하다.

 

배우고 느낀점

저번에 간략하게 배웠던 예외처리를 자세히 알아보고 입출력 스트림의 종류와

개념에 대해 간략하게 배웠다. 비정상적이게 종료될 때의 상황을 대비하여

만드는 것으로 예외처리를 작성하는 것임을 조금 더 알게 된 거 같고

나중에 사용하게 될 상황이 없을 거 같았는데

많이 사용하게 될 거 같다고 다시금 생각하게 되었다.

 

 

'성장 일기 > 쌍용교육센터' 카테고리의 다른 글

0110/Stream  (0) 2023.01.10
0109/Stream, File  (0) 2023.01.09
0105/Font, 예외 처리  (0) 2023.01.05
0104/Swing Component  (0) 2023.01.04
0103/Swing Component  (0) 2023.01.03
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유