본문 바로가기
with my rubber duck/errors

stream 반복문 조건에 왜 변수를 사용하나? & EOFException

by stilinski 2022. 4. 17.
728x90

이렇게 read를 조건에 저걸(?) 바로 넣어버리면 파일의 요소들이 다 출력이 안됨.

 

 

 

 

내가 넣은 데이터는 이렇게 3개인데

 

 

 

그 이유는 while 조건에서 이미 read를 만나 1이 읽어짐. 그러고 나면 while안에 있는 read에서는 2번째 문을 읽어옴. 또 와일 조건에서 마지막 객체인 3을 만남. 그러면 와일문 안에 있는 read는 읽어올 게 없으므로 readObject메서드에서 읽어올 게 없을 때 발생되는 EOFException이 뜨게 됨.

 

 

 

 

그렇기 때문에 while의 조건문에서 read가 만난 데이터와, while안에 있는 read가 만난 데이터가 같아야 함. 그래서 변수를 사용해서 넣어줌.

요렇게.

 

 


이런거 볼 때마다 뭔가 어렴풋이 알고는 있었는데 좀 찝찝한 상태로 넘어갔었다.

오늘 주말이라 좀 시간적 여유가 있어서 왜 그런지 생각을 해볼 수 있었다.

후 짱 시원하다 ㅋ

 

 

 

 


그러나. 나를 기다리는 또 다른 복병이 있었으니...

 

 

저렇게 해도 저 EOFException 계속 뜸.

(데이터들 저장은 잘 된 모습)

알고 보니 파일에 읽어올 객체가 없는 상태에서 readObject를 만나면 무조건 뜸.

와일 문의 조건에서 readObject를 만나니 뜸.

 

 

 

 

EOFExeption 없애는 방법!!!

단순 간단 catch로 잡아주고 안에 아무것도 안 넣으면 조용히 넘어간다ㅎ

후훗

 

 


분명 시간은 주말이 더 많은데... 왜 평일이랑 똑같은 시간 공부를 하게 되는 거지

..... 오히려 더 안 하는 거 같기돜ㅋ

다음 주부턴 정신 차리자^^ 

 

 

++04.22추가

 

복습하다가 더 좋은 방법을 발견

기존의 것.

개선된 것

와우 진짜 이게 훨씬 나음

결론 -> 변수에 넣을 필요 없다.

이렇게 하면.

728x90

댓글