ObjectInputStream에서 EOFException이 발생한다면?

찌글렛·2022년 2월 15일
0

Exception

목록 보기
1/4

java.io.EOFException: null
at org.apache.tomcat.util.net.NioEndpointNioSocketWrapper.fillReadBuffer(NioEndpoint.java:1231)atorg.apache.tomcat.util.net.NioEndpointNioSocketWrapper.fillReadBuffer(NioEndpoint.java:1231) at org.apache.tomcat.util.net.NioEndpointNioSocketWrapper.read(NioEndpoint.java:1141)
at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:795)
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:359)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:261)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocolConnectionHandler.process(AbstractProtocol.java:888)atorg.apache.tomcat.util.net.NioEndpointConnectionHandler.process(AbstractProtocol.java:888) at org.apache.tomcat.util.net.NioEndpointSocketProcessor.doRun(NioEndpoint.java:1597)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:624)atorg.apache.tomcat.util.threads.TaskThreadWorker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThreadWrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:750)

자바의 IO 클래스를 이용해서 프로그램의 객체를 파일 또는 네트워크로 내보내고 받아야하는경우 외부에서 읽어온 객체가 여러개라면 더이상 읽어온 객체가 없을때 까지 반복해서 객체 읽어오기 작업과 형변환 작업을 해야한다.
다른 read()메소드와 같이 그런데, readObject() 메소드는 더이상 읽어온 객체가 없을 때 -1을 리턴하지 않는다.
어떻게 해결해야할까?
readObject() 메소드는 더이상 읽을 객체가 없다면 EOFException 을 발생시킨다.
이를 이용해서 객체를 읽어오는 과정은 계속 반복하고 => while(true)
readObject() : 메소드 실행시 예외가 발생하면 특정작업을 하도록 코딩한다. => 예외처리

0개의 댓글