Java eclipse警告:最后一个块不';我不能正常完成

Java eclipse警告:最后一个块不';我不能正常完成,java,eclipse,try-catch-finally,Java,Eclipse,Try Catch Finally,我有一些代码抛出了一个潜在的错误,我捕捉到了这些错误,然后跳入一个块,最后是块,这里是“伪”形式 private boolean myMethod(ResultSet rs1, ResultSet rs2){ Vector<String> temp = new Vector<String>(); try{ //add info into temp while condition is true while(true){temp.add(information);}/

我有一些代码抛出了一个潜在的错误,我捕捉到了这些错误,然后跳入一个
块,最后是
块,这里是“伪”形式

private boolean myMethod(ResultSet rs1, ResultSet rs2){

Vector<String> temp = new Vector<String>();

try{

//add info into temp while condition is true
while(true){temp.add(information);}//potentially throws an SQL error

//test my temo object for some codition
if(false){throw InternalError();}


}catch (SQLException e){
     //send error message
}
catch (InternalError e){
     //send error message
}

finally{
//whatever happens I need to send a result of some sort!

if(temp.size() > 1){
   //create class member variable from this info
}

//send a message explaining that an error has occurred.

//this is the message to say if things have worked or not, so as the
//calling code can handle an re-run this method until this value returns true.
return booleanValue
}//end finally


}//end method
private boolean myMethod(ResultSet rs1,ResultSet rs2){
向量温度=新向量();
试一试{
//在条件为真时将信息添加到temp中
while(true){temp.add(information);}//可能引发SQL错误
//测试我的temo对象是否有编码
if(false){throw InternalError();}
}捕获(SQLE异常){
//发送错误消息
}
捕获(内部错误){
//发送错误消息
}
最后{
//无论发生什么,我都需要发送某种结果!
如果(温度大小()>1){
//根据此信息创建类成员变量
}
//发送一条消息,说明发生了错误。
//这是一条信息,说明事情是否奏效,因此
//调用代码可以处理重新运行此方法,直到此值返回true为止。
返回布尔值
}//最后结束
}//结束方法
我不确定这个错误消息在这个例子中的确切含义

我通常在抛出异常的任何方法中处理任何异常,在本例中,我应该抛出而不是处理异常,并在自定义异常中捕获这两个错误吗

我发出的前两条消息主要是为了开发目的,因为我必须处理它们。 my finally块中的消息最终将包含发送给用户的消息,要求他们确认情况、进行修改、中止或更改我们处理这种情况的方式

我应该如何“删除”编译器消息。我不喜欢在我的代码中抑制警告,因为我不喜欢这样的暗示,即我可能会抑制链上的其他内容,而且抑制是针对整个方法的,我不能仅针对这一小块代码添加它

对我的情况有什么建议吗

提前谢谢

edit1:为了反映注释,很抱歉忘记在if(test){}大括号中添加正确的返回类型(愚蠢的错误)


另外,对于那些“被否决”的人,你可以发表评论,并在否决之前给我一个编辑的机会。谢谢另外,在我的代码中,这些东西并没有给我带来问题,这是一个在发布过程中大脑和手指之间发生“quertyscript故障”的情况。

方法返回类型为
void
,并且在
finally block
中有返回语句
返回布尔值。我将使用finally块关闭非java资源


如果要返回值,则可以在try block或catch block中返回,或者在
try{}
catch{}
之外返回,但不能在
finally{}
中返回。如果已格式化代码,则会看到
finally
子句位于
catch
内,并且没有链接到任何
try
子句

你应该

try {

} catch {

} finally {

}
而不是

try {

} catch {
     finally {

    }
}

中断继续*返回*和抛出是语句的突然完成。 您应该在finally块之外执行返回。
此外,您正在以void方法返回。

这是因为您在finally块中有return语句,这是不可取的,被认为是一种糟糕的编码样式。

将catch的右括号(if和finally)放在下一行注释中。他们现在是评论的一部分,因此你得到了错误。另外,void方法不会返回任何东西,这是“伪代码”,这意味着这可能不是问题的真正根源。然而,这里的“伪代码”编写得令人费解,它实际上隐藏了相关的细节…
最后
不太可能在任何Java环境中工作。最后尝试
…编辑解释:DaveM有右大括号,他没有格式化。@Nandkumar您忘记格式化if的右大括号了。:如果我在catch中放了一个return语句,那么我肯定永远不会到达finaly,因为该方法已经在我的一个或另一个catch语句中返回了?您将始终到达
finally
!我刚刚搜索了“最终总是在返回后运行”并在SO上找到了这个:whick回答了我的问题。我将把这个标记为答案,并给其他提到类似事情的人+1。请参阅我对Nandkumar关于返回语句的评论。谢谢DavidSee我对上面nandkumar的回复。