Java异常翻译

Java异常翻译,java,exception,checked,unchecked,Java,Exception,Checked,Unchecked,如果这已经在其他帖子中讨论过,我表示歉意,但我发现当我被迫写下我的问题时,这有助于澄清我的想法。我试图正确理解Java中检查异常与未检查异常以及异常转换的概念,但我感到困惑。到目前为止,我了解到检查异常是需要始终在try/catch块中捕获的异常,否则会出现编译时错误。这是为了迫使程序员考虑在运行时可能发生的异常情况,如磁盘已满等。这是正确的吗?我不明白的是为什么我们有未检查的异常,它们什么时候有用?是否仅在开发期间调试可能访问非法数组索引等的代码?这种混乱是因为我看到错误异常和RunTimeE

如果这已经在其他帖子中讨论过,我表示歉意,但我发现当我被迫写下我的问题时,这有助于澄清我的想法。我试图正确理解Java中检查异常与未检查异常以及异常转换的概念,但我感到困惑。到目前为止,我了解到检查异常是需要始终在try/catch块中捕获的异常,否则会出现编译时错误。这是为了迫使程序员考虑在运行时可能发生的异常情况,如磁盘已满等。这是正确的吗?我不明白的是为什么我们有未检查的异常,它们什么时候有用?是否仅在开发期间调试可能访问非法数组索引等的代码?这种混乱是因为我看到错误异常和RunTimeException一样都是未检查的,但我不清楚为什么它们都被归为未检查的类别


编辑:好的,我想我可以在仔细考虑之后把我的问题简化为更具体的问题。如果一个Java方法抛出一个检查过的异常,并且在上面两层处理它更有意义,那么我是否应该在每一层中继续重新抛出相同的检查过的异常,即冒泡,直到它到达可以处理它的层?或者,我可以抛出一个更具体的异常,也许我上面的层可以更有意义地解释它

在开发过程中,您应该努力消除导致大多数未检查异常的情况。空指针、数组索引超出范围等等。这些都是代码中使用适当的检查/开发技术可以避免的问题


无法读取文件、打开网络套接字或应用程序无法控制的其他内容将作为检查异常抛出,无论应用程序写得多么好,您都需要处理这些异常。

谢谢,因此如果我捕获到检查异常并从catch块中重显未检查异常,我上面的层是否被迫捕获我刚刚抛出的异常?对我来说,在代码中处理运行时异常是一种糟糕的编程实践。正如Nick所说,应该在代码中通过检查或开发技术来处理它。谢谢,但不是我在评论中所要求的。答案应该是“是”或“否”。不,异常现在已取消选中,因此它将立即通过。