尝试抓住具体细节

时间:2012-07-11 22:19:03

标签: java android try-catch

当我尝试使用try / catch时,我很困惑尝试捕获什么类型的错误。 在stackoverflow中进行研究时,我看到了关于不建议使用

的评论
catch(Exception e)

因为它是通用的但我在哪里可以找到我应该寻找的特定错误类型的例子将尝试使用伪代码播放音频文件

try{
  play audio file
}
catch ( invalid file)
catch ( bad connection)
catch ( file not found)
catch ( invalid file size)
etc

上面列出的伪错误涵盖了从互联网连接到文件特定信息的广泛功能。

如何涵盖所有这些案件

我有一个应用程序,显示一条消息,说该文件无法播放但我想捕获特定的错误,看看每次出现此消息时会发生什么并修复它。

如果我想尝试捕获一个我自己编码的独特内容的错误,该怎么办?

这可能是一个不好的例子但是如果我想计算行星轨道的持续时间并且如果持续时间小于某个值则产生错误。使用的值应该导致一个区域超过13个月但是对于一些未知的原因导致它低于13并且我想找出原因所以我使用try catch因为有些东西是错误的我不知道它是什么,也许我需要使用一个数字的绝对值而不是数字本身或类似的东西我不知道错误是由什么造成的。

2 个答案:

答案 0 :(得分:3)

您可以通过指定要捕获的特定类型来捕获特定错误:

try {
    ...file open...
} catch (IOException e) {
    ...handle IO exception...
}

有一个giant list of exceptionsException的所有子类。异常以层次结构组织,因此一些包含其他异常。例如,EOFExceptionIOException的子类,因此如果您想捕获任何IO错误(包括EOF错误),请使用IOException,如果您只想捕获EOF,请使用EOFException

您可以编写自己的Exception(或其子类之一)的sublcass,并像任何其他预定义的异常一样捕获它。

答案 1 :(得分:0)

您将知道“捕获”的唯一方法是查看方法定义,因为它们将说明将抛出哪些异常。如果你想要一个通用的catch,那么你已经拥有了Try Catch,因为Exception Class是所有其他标准异常的基类