我有一个连接到邮件服务器的方法,获取所有消息并在Array中返回这些消息。 所以这看起来像这样(伪代码):
public Message[] getMessages() throws Exception {
try{
//Connection to mail server, getting all messages and putting them to an array
return Message[];
} finally {
CloseConnectionToMailServer(); //I don't need it anymore, I just need messages
}
}
我可以将“return”指令放到“finally”块中,但这会禁用潜在的Exception。 如果我现在离开它,就永远无法达到“返回”。
我认为你遇到了我遇到的问题。如何获得我需要的所有消息,返回包含这些消息的数组并以精细(甚至是“最佳实践”)的方式关闭与服务器的连接?
提前谢谢。
答案 0 :(得分:3)
你的方法很好。即使你从try块返回finally块也会被执行。 并且您的方法必须返回一个值:
public Message[] getMessages() throws Exception {
try{
//Connection to mail server, getting all messages and putting them to an array
return Message[];
} finally {
CloseConnectionToMailServer(); //I don't need it anymore, I just need messages
}
return null;
}
答案 1 :(得分:0)
“标准”版本(我见过)是
try {
doStuff()
} catch (Exception e) {
throw e;
} finally {
closeConnections();
}
return stuff;
我认为没有理由不适用于您的代码。
作为旁注,如果你的代码是'返回数据'的东西,我通常认为更容易使它成为'public Message [] getStuff()抛出SQLException',然后让调用类处理错误
答案 2 :(得分:-2)
为什么不这样:
public Message[] getMessages() throws Exception {
Message = null;
try{
//Connection to mail server, getting all messages and putting them to an array
Message = Messages;
} finally {
CloseConnectionToMailServer(); //I don't need it anymore, I just need messages
return Message;
}
}