首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java术语:为什么编译时错误而不是编译时异常?

Java术语:为什么编译时错误而不是编译时异常?
EN

Stack Overflow用户
提问于 2010-05-22 15:21:54
回答 6查看 3K关注 0票数 8

这听起来可能很尴尬。

但我不明白。

为什么java中有compile-time error而不是compile-time exception呢?

我是说我们从来没有说过compile-time exception.

我们倾向于把它称为compile-time error

有什么特别的原因吗?

欢迎任何建议..。

谢谢!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-05-22 15:28:57

其原因是,异常是在执行程序期间抛出的东西。Java有一个特定的类型,即Exception类。

在编译时,您的代码没有执行,所以它不能抛出异常。实际上,正确地执行编译器来查找代码中的错误--当然不是例外情况!

票数 11
EN

Stack Overflow用户

发布于 2010-05-22 15:29:10

java中的异常实际上与编译错误不同。我们没有术语编译时异常。因为例外是发生了一些你不希望它发生的事情。我们只检查和未检查异常。除了选中的异常,在编译时,编译器将强制您捕获它,但它是而不是错误。不要抓住它,你不能编译程序,但它不是编译错误。

票数 4
EN

Stack Overflow用户

发布于 2010-05-22 15:47:04

错误表示程序有问题。异常是一个特定的构造,它中断程序的控制流,并展开堆栈,捕获有关堆栈状态的信息,以便报告。

异常可用于指示错误,但并非总是如此。例如:

代码语言:javascript
复制
void startOperation() {
 try {
  while (someComplexOperationIsOnGoing()) {
   checkRestart();
  }
 }
 catch (RestartException re) {
  startOperation();
 }
}

void checkRestart() {
 if (shouldRestart()) {
  throw new RestartException();
 }
}

此不完整的代码示例旨在显示异常不是错误的情况。这并不总是最佳实践;但在某些情况下使用它,目的是中断程序中的控制流(例如,在响应HTTP请求时,在web框架中重定向页面),并将控制返回到堆栈的较高级别。术语exception指中断程序的机制。

在java中,有一个异常类封装了这个行为。Error类也以与异常相同的方式中断控制流;但它仅为运行时发生的严重、不可恢复的问题保留。例如,当JVM耗尽内存而不能创建新对象时,就会使用它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2888636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档