如何预测一下它是否会产生运行时错误或无法编译

时间:2010-06-24 00:13:57

标签: java runtime compilation

我正在寻找有关java的各种网站(如blackbeltfactory等)的测验和测试。我遇到的问题有“不编译”或“在运行时抛出异常”等选项。

有什么方法可以猜测一下会发生什么?或者是熟悉java的问题? 我认为这是关于java如何工作的重要一点。

提前致谢, Bugra

3 个答案:

答案 0 :(得分:5)

对于人类,你必须“熟悉Java”

对于机器(或程序),它必须遵循语言指定的规则。

例如给定的类:

class Main  {
     String s;
}

调用的结果是什么:

Main m = new Main();
m.s.length();

A)不编译?

B)在运行时抛出异常?

要回答这个特定的问题,你必须知道,如何用Java定义类(要知道我所展示的是否是有效的类定义),你还必须知道如何定义属性和默认值等,所以你必须熟悉这门语言。

当您了解所有这些概念后,您可以通过快速查看轻松回答。

<> BTW,着名的 Sun认证Java程序员认证,就是要了解这类内容,而不是知道如何开发应用程序。它是关于在“人类编译器”中转换你的自我

答案 1 :(得分:1)

显然,更好地了解Java会有所帮助。但是,有一些一般规则。

“不编译”意味着编译器字面上无法理解代码的语法。这可能是因为错位或缺少括号或括号,参数数量错误的方法以及其他类似的事情而导致的:

int a = (3 + 2) - 1);

“在运行时抛出异常”意味着编写的代码在语法上有意义,但是当它实际执行时,它会告诉机器做一些无论出于何种原因不可能的事情。语言中内置了一些异常,例如,如果您尝试除以零,但许多也会在代码中明确定义和抛出。程序员使用这些例外来创建程序,当他们尝试做他们不应该做的事情时会明显地破坏,而不是默默地打破然后引发其他问题:

int a = b / c; // very bad if c == 0

一般来说,编译器错误看起来更像是拼写错误(通常是由拼写错误引起的),而运行时异常将来自在特定条件下失败的行(例如,某些变量等于零)。但是,再一次,真正了解语言并没有真正的替代品。

答案 2 :(得分:0)

我的诚实意见是熟悉java,但有些编译错误很明显,并且与其他语言非常相似。