처음으로이 사이트에 게시하고 전송 객체를 사용하여 소켓을 통해 서버 - 클라이언트 연결을 구현하는 프로그램을 작성하려고합니다.Java Serialization/De-SerializationTry 시도 내에서 캐치
어떤 예외가 발생하면 개체를 역 직렬화 할 때 서버에서 클라이언트에 연결이 끊어진 오류가 있음을 클라이언트에 알리는 개체를 보내려고합니다.
내 해결 방법은 다른 try catch 블록으로 둘러싼 catch 블록 안에 객체를 작성하는 것이 었습니다. 캐치가 비어 있습니다.
좋은 방법입니까? 거기에 더 깨끗한 해결책이 있습니까? 객체를 쓰지 않고 클라이언트에게 알려주는 방법입니까?
코드 :
try {
if (transferObject.getMessage().equals("insert")){
dao = new DAO();
dao.insertToDB(transferObject.getObject();
transferObject.setMessage("success");
}
else if (transferObject.getMessage().equals("disconnect")) {
transferObject = new TransferObject("disconnect");//contructor sets object to null.
}
out.writeObject(transferObject);
out.flush();
} catch(Exception e) {
transferObject = new TransferObject("failure");
try {
out.writeObject(transferObject);
out.flush();
} catch (Exception e) {
//nothing here
}
}
아니요 예외를 처리하는 예외가 발생하면 어떻게됩니까? '아무것도'는 적절한 응답이 아닙니다. – EJP
* 어떤 예외가 발생하면 개체를 직렬화하지 않습니다. 해당 개체를 다시 보내려고합니다. * 예외가 있으면 직렬화되지 않은 개체가 없어서 다시 보낼 수 없습니다. –
어떻게 클라이언트가 그 메시지를 처리하고 이에 따라 종료 할 수 있도록 클라이언트에게 알려주는 transferobject (메시지 "실패"및 객체 널과 함께)를 보낼 수 있습니까? – Brock