运行时错误和编译器错误之间有什么区别?

2022-08-31 16:24:26

在我关于策略态的一张专业幻灯片中,我看到这段代码带有一些注释:

discountVariable =              //will produce
  (DiscountSale)saleVariable;//run-time error
discountVariable = saleVariable //will produce
                                //compiler error

如您所见,它在第一个转换语句中说它将产生运行时错误,而在另一个强制转换语句中,它说它将产生编译器错误

是什么造成了这些错误?以及它们彼此有何不同?


答案 1

仅当代码实际运行时,才会发生运行时错误。这些是最困难的 - 并导致程序崩溃和代码中的错误,这些错误可能难以跟踪。

例如,可能尝试将字符串“hello”转换为整数:

string helloWorld = "hello";
int willThrowRuntimeError = Convert.ToInt32(helloWorld);

编译器可能不会将此视为问题,但在运行时将引发错误。

编译器错误是由于代码中的不准确造成的,编译器会引发错误以提醒您某些无法编译的内容,因此无法运行。

编译器错误的一个示例是:

int = "this is not an int";

希望有所帮助。


答案 2

在程序运行期间发生运行时错误。当您尝试编译代码时,会发生编译器错误。

如果无法编译代码,则为编译器错误。

如果编译并运行代码,但在执行过程中失败,则为运行时。


推荐