반응형
자바에서는 프로그램 진행 중 (개발자가 처리 가능한) 예외가 발생했을 경우 관련된 클래스로 객체를 생성하여 그 객체를 전달하려 한다. 개발자가 그 예외객체에 대한 처리를 해놓지 않았을 경우 예외 객체는 JVM한테까지 전달되고 결국 프로그램이 중단된다.
예외Exception(개발자가 조치 가능한)의 종류
-
개발자의 조치가 불가능한 경우 에러Error 라고 부름.
-
체크예외 - 컴파일러가 빨간색으로 예외처리를 강제하는 예외
-
비체크예외 - 컴파일러가 빨간색 표시 안하는데 실행하다 보면 나는 에러(RuntimeException 클래스의 자손 클래스 객체들)
예외에 대한 처리 문법 2가지
-
직접 try-catch-[finally] 작성하기.
-
현재 메소드를 호출하는 상위 메소드에게 처리를 위임하기.
I/O - Input/Output Stream
순서를 가지는 데이터 흐름. 여러 개가 순차적으로 나가거나 들어오거나
-
등장 클래스 : FileInputStream, FileOutputStream Reader/Writer : 프로그램에서 외부에 내보내는 데이터, 읽어오는 데이터가 문자열인 경우 stream으로는 번거로움 (매전 byte로 쪼개서 내보내고 읽은 바이트를 다시 문자열로 만들어야 하고.. 한두번이지...)
- reader writer는 주고 받는 것이 문자열이때 편하다.
-
등장 클래스 : InputStreamReader/OutputStreamWriter (참고로 그냥 파일에 단순 읽기 쓰기는 FileReader 또는 FileWriter를 써도 되긴 함.)
-
Buffered : 프로그램 외부와의 데이터 통신에서 통신효율성을 위한 버퍼작업이 구현된 클래스
- 바이트 단위로 계속해서 보내기 보다는 버퍼에 데이터를 적당히 담아서 한꺼번에 보내는 편이 효율적이다.
객체를 저장하고자 할때 쓰는 방법
- 객체 자체를 읽고 쓸 때에는 implemets Serializable 해줘야한다.
- 전송하고자 하는 객체에 반드시 선언이 되어있어야 한다.
- ex> public class Book implements Serializable
@Override
public void open() {
try(ObjectInputStream is = new ObjectInputStream(new FileInputStream("book.dat"));) {
al = (List<Book>)is.readObject();
} catch (FileNotFoundException e) {
System.out.println("파일을 찾을 수 없습니다!");
// e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void close() {
try(ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("book.dat"))) {
os.writeObject(al);
os.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
'자바 > 개념' 카테고리의 다른 글
XML 파싱(DOM,SAX) (0) | 2020.04.15 |
---|---|
람다식 (0) | 2020.02.20 |
Interface & Collection API (0) | 2020.02.19 |
char[] 를 String으로 바꾸는 법 Tip (0) | 2020.02.18 |
[자바] String (0) | 2020.02.09 |