【发布时间】:2015-09-08 17:25:24
【问题描述】:
我正在开发一个基本的 Java 命令行电子邮件客户端应用程序。我提供的连接器将向我发送电子邮件,但是如果我“发送”一封电子邮件,它不会位于连接器上,因为我自己创建了这封电子邮件。现在,当我想删除一封电子邮件时,我可以找到我所在的文件夹并按其 ID 将其删除。如果它位于连接器内,我还想从连接器中删除它,以便在刷新电子邮件时我不会再次收到此电子邮件。
public boolean delete(int messageId) throws IndexOutOfBoundsException
{
if (folders.get(getActiveFolderName()).delete(messageId))
{
if (connector.retrMessage(messageId) != null)
{
connector.markMessageForDeleting(messageId);
//throws exception if not found on connector
}
return true;
}
return false;
}
我试过了,这是处理异常的一种非常糟糕的方法吗?:
public boolean delete(int messageId)
{
if (folders.get(getActiveFolderName()).delete(messageId))
{
try{
connector.markMessageForDeleting(messageId);
} catch (IndexOutOfBoundsException e)
{
//this successfully soaks up the exception if its not located in connector
}
return true;
}
return false;
}
谢谢
【问题讨论】:
-
检查列表/数组中是否有该元素而不是使用异常来控制流程不是更好吗?
-
除了您已经收到的好答案之外,我不得不说
connector必须写得很糟糕才能将IndexOutOfBoundsException作为ONLY表示它没有该消息的方式。