java - 尝试捕捉细节

标签 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

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

我如何涵盖所有这些情况

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

如果我想 try catch 我自己编码的独特内容的错误怎么办?

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

最佳答案

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

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

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

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

关于java - 尝试捕捉细节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11442362/

相关文章:

java - 页面内脚本的 htmlunit 404 错误

java.net.URI - : Illegal character in fragment at index XXX - due to character "#"

java - E/RecyclerView : No adapter attached; skipping layout -- when making a todo list app

Android 应用程序 - 使用 Gridlayout 溢出屏幕大小

java - 使用局部变量还是全局变量更好

Java找不到非java文件

android - 如何在 Facebook F8 之后在 android 中获取 Facebook 好友

laravel 在 try catch 中使用 withErrors

c# - 异常没有被捕获 block

javascript - 如何在 JavaScript 中捕获 ERR_FILE_NOT_FOUND 错误