当我尝试使用 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
我上面列出的伪错误涵盖了从互联网连接到文件特定信息的广泛功能。
我如何涵盖所有这些情况
我有一个应用程序显示一条消息,指出该文件无法播放,但我想捕获特定错误并查看每次出现此消息时发生了什么并修复它。
如果我想 try catch 我自己编码的独特内容的错误怎么办?
这可能是一个不好的例子,但如果我想计算行星轨道的持续时间并在持续时间小于某个值时生成错误。使用的值应该导致一个区域超过 13 个月,但由于某些未知原因导致它低于 13,我想找出原因所以我使用 try catch 因为出了点问题而且我不知道它是什么,也许我需要使用数字的绝对值而不是数字本身或类似的东西主要是我不知道错误是由什么引起的。
最佳答案
您可以通过指定要捕获的特定类型来捕获特定错误:
try {
...file open...
} catch (IOException e) {
...handle IO exception...
}
有一个 giant list of exceptions , Exception
的所有子类。异常按层次结构组织,因此一些包含其他异常。例如,EOFException
是 IOException
的子类,因此如果您想要捕获任何 IO 错误(包括 EOF 错误),请使用 IOException
,如果您只想特别捕获 EOF,使用 EOFException
。
您可以编写自己的 Exception
子类(或其子类之一),并像捕获任何其他预定义异常一样捕获它。
关于java - 尝试捕捉细节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11442362/