3

当我尝试使用 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,因为出现问题并且我不知道它是什么,也许我需要使用数字的绝对值而不是数字本身或类似的东西,主要的一点是我不知道错误是由什么引起的。

4

2 回答 2

3

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

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

有一个巨大的异常列表,所有的子类Exception。异常按层次结构组织,因此有些包含其他异常。例如,EOFException是 的子类IOException,所以如果你想捕捉任何 IO 错误(包括 EOF 错误),请使用IOException,如果你只想特别捕捉 EOF,请使用EOFException.

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

于 2012-07-11T22:24:15.940 回答
0

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

于 2012-07-11T22:24:31.827 回答