抛出异常的方法:实际处理的位置是什么?

时间:2013-11-09 21:47:17

标签: java android exception exception-handling

这是一个示例代码,我在这里抛出一个异常,由于某种原因,它没有try / catch代码块,完全正常。

我是否必须在此方法“EntryDelete”中处理此问题 要么 在调用方法时我是否必须处理此问题? 如果是这样我可以看到一个例子,那里我需要输入什么?这样做的可接受的语法或方法是什么?

public boolean EntryDelete(int entryId) throws SQLException{
    this.open();
    kDatabase.delete(kENTRY_TABLE, kENTRY_ENTRY_ID + "=" + entryId, null);
    this.close();
    return true;            
}   

编辑:在方法内外处理异常的想法是什么?

在方法内部处理的好处是什么,在方法之外处理它的好处是什么?

由于

2 个答案:

答案 0 :(得分:1)

抛出的异常由此方法的调用者处理(进一步抛出或捕获),而不是此方法本身。当然,你可以在这里添加try-catch来处理它,但是因为它当前是你的方法强制调用者处理可能抛出的异常。

回答您提出的问题:

“在方法内部处理的好处是什么,在方法之外处理它的好处是什么?”

遗憾的是,我能想到的最全面的正确答案是,在方法中处理异常的好处是不必在方法之外处理它。一般来说,越早处理异常就越好,因为你通常不想强迫任何调用你的方法的人为任何非必要的异常做准备。

答案 1 :(得分:1)

由于该方法有

throws SQLException
签名中的

因此调用此方法的方法必须处理异常。

编辑:没有经验法则,但from您可以使用以下指南

如果客户端可以采取一些备用操作从异常中恢复,则抛出异常。如果客户端无法执行任何有用的操作,请处理异常。有用的,我的意思是采取措施从异常中恢复,而不仅仅是记录异常。