有人告诉我,Java的“可移植性”功能也在异常处理中得到证明,因为在JLS8文档中{here)
此类违规行为的一个例子是尝试在外部进行索引 数组的边界。一些编程语言及其编程 实现通过强制终止对这些错误做出反应 程序;其他编程语言允许实现做出反应 以任意或不可预测的方式。这些方法都不是 兼容Java SE平台的设计目标:提供 可移植性和健壮性。
但是,按照我对Java的了解,我只知道可移植性功能只涉及Java程序的实现(Write Once Run Anywhere)。
请帮我澄清一下这个问题,并举例说明......谢谢!!
答案 0 :(得分:0)
其他语言中不可预测的行为与快速失败(运行时异常)的更高质量相比。是的,这会影响可移植性,尤其是处理错误报告。日志在嵌入式市场中发挥着重要作用。
答案 1 :(得分:0)
关键句是:
这些方法都不符合Java SE平台的设计目标:提供可移植性和健壮性。
请注意,我强调了另一个词。
通过抛出异常而不是以不可预测的方式行事来增强可移植性。如果一个程序行为不可预测,那么它可能会在不同的平台 1 上表现不同。根据定义,这是非便携的 。
没有程序就可以增强健壮性,并强制终止"。根据定义终止(例如崩溃)的程序是非健壮的。
Java中的异常和异常处理旨在解决可移植性和健壮性问题,但(显然)特定的异常并不一定能解决这两个问题。
我只知道可移植性功能只涉及Java程序的实现(Write Once Run Anywhere)..
"写一次随处运行"是一个明显不正确的营销口号。
但是,您的意思是正确的,因为Java程序的愿望是能够在多个平台和版本上运行而无需重新编译。这是便携性的一个方面。
1 - 换句话说,如果程序的行为不可预测,那么我们无法预测它在不同平台上的行为会相同。