关于java中的异常的初学者问题

时间:2009-11-18 19:51:25

标签: java exception exception-handling

当一个方法无法处理的异常时 - 程序是否终止并显示错误号?错误编号和错误信息来自哪里?如果程序员在编码时知道可能发生什么样的异常。如果是这样,为什么他不确保不发生异常。

4 个答案:

答案 0 :(得分:2)

如果您使用的是Java API,则会记录每个方法抛出的异常。

当程序终止时,它会显示导致该特定问题的方法调用的堆栈跟踪。

检查lesson on Exceptions from The Java Tutorial。你可以在这里学到更多东西,而不是在这里阅读我的答案:)

答案 1 :(得分:1)

Java中有两种主要的异常类型:

- checked
- unchecked

未经检查的异常会进一步分解为RuntimeException和Error。

RuntimeExceptions是程序员错误(ArrayIndexOutOfBoundsException),错误是VM中的问题(OutOfMemoryError)。

你不应该捕获RuntimeExceptions - 你应该修复你的代码,这样就不会抛出异常。

您不应该捕获错误,因为虚拟机很可能处于无法从中恢复的状态。

如果您的主程序未捕获未经检查的异常,则会崩溃。

答案 2 :(得分:0)

Java Exceptions冒泡到某人捕获它们或者程序退出的程度。 在现实世界中,当使用许多框架时,异常从未冒泡到顶端。它们被捕获并报告(打印在控制台上)。捕获异常由try { } catch(..) { }块完成。

有两种类型的例外 - 已选中和未选中。必须在方法签名中声明已检查的异常(与未选中的异常不同)

答案 3 :(得分:0)

  

程序员应该在编码时使用   知道什么样的例外   可能会发生

是的,但没有人是完美的。

  

为什么他没有确保异常   不会发生

在特殊情况下,您需要例外。您不想忽略该异常。 例如,假设您的程序创建了一个文件来保存用户设置。如果由于某种原因 文件创建失败(您的程序无法控制,这是操作系统的工作),您不希望继续发生任何事情。你希望有一个异常,所以无论是谁或任何调用该函数的函数都知道这个问题,并且可以做一些事情,例如告知用户。