初めてこのサイトに投稿しました。転送オブジェクトを使用してソケット経由でサーバーとクライアントの接続を実装するプログラムを作成しようとしています。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(メッセージ "failure"とオブジェクトnull)を返すことができますか? – Brock