Java的可移植性在异常处理中有没有证明?
Does the portability feature of Java is proved in exception handling?
有人告诉我 Java 的 "portability" 特性在异常处理中也得到了证明,因为在 JLS8 文档中 (here)
An example of such a violation is an attempt to index outside the
bounds of an array. Some programming languages and their
implementations react to such errors by peremptorily terminating the
program; other programming languages allow an implementation to react
in an arbitrary or unpredictable way. Neither of these approaches is
compatible with the design goals of the Java SE platform: to provide
portability and robustness.
但是,根据我对 Java 的了解,我只知道可移植性功能只涉及 Java 程序的实现(一次编写 运行 随处可见)..
请帮我澄清一下这个问题,并给我一个例子来演示...谢谢!!
其他语言中不可预测的行为与具有快速失败(运行时异常)的更好质量。是的,这会影响可移植性,尤其是处理错误报告。例如,日志在嵌入式市场中发挥着重要作用。
重点句子是这样的:
Neither of these approaches is compatible with the design goals of the Java SE platform: to provide portability and robustness.
请注意,我强调了不同的词。
通过抛出异常而不是以不可预测的方式运行来增强可移植性。如果一个程序的行为不可预测,那么它在不同平台上的行为很可能会有所不同1。根据定义.
,这是不可移植的
健壮性因没有程序而增强 "peremptorily terminate"。根据定义.
,终止(例如崩溃)的程序是非健壮的
Java 中的异常和异常处理旨在解决可移植性和稳健性问题,尽管(显然)特定 异常不一定同时解决这两个问题。
I just know that the portability feature just involve the implementation of Java program (Write Once Run Anywhere)..
"Write Once Run Anywhere" 是一个明显不真实的营销口号。
- 从某种意义上说,Java 不会 运行 在没有人为其实现 JVM 的机器上,这是不正确的。
- 从平台差异(例如 Windows 和 Linux 上的 Java 运行ning 之间)的意义上说,Java 是不正确的不隐藏。任何没有适当考虑这些差异的程序都将无法移植。
- Java 有多个版本和发行版,并且为一个版本/发行版编写的 Java 程序可能与另一个版本/发行版不兼容。 (一般来说,旧的应用程序会 运行 在新的 Java 上,但反之则不然。)
但是,您的愿望是 Java 程序能够 运行 在多个平台和版本上无需重新编译,这一点是正确的。这是便携性的一方面。
1 - 换句话说,如果一个程序的行为是不可预测的,那么我们就无法预测它在不同平台上的行为是否相同。
有人告诉我 Java 的 "portability" 特性在异常处理中也得到了证明,因为在 JLS8 文档中 (here)
An example of such a violation is an attempt to index outside the bounds of an array. Some programming languages and their implementations react to such errors by peremptorily terminating the program; other programming languages allow an implementation to react in an arbitrary or unpredictable way. Neither of these approaches is compatible with the design goals of the Java SE platform: to provide portability and robustness.
但是,根据我对 Java 的了解,我只知道可移植性功能只涉及 Java 程序的实现(一次编写 运行 随处可见)..
请帮我澄清一下这个问题,并给我一个例子来演示...谢谢!!
其他语言中不可预测的行为与具有快速失败(运行时异常)的更好质量。是的,这会影响可移植性,尤其是处理错误报告。例如,日志在嵌入式市场中发挥着重要作用。
重点句子是这样的:
Neither of these approaches is compatible with the design goals of the Java SE platform: to provide portability and robustness.
请注意,我强调了不同的词。
通过抛出异常而不是以不可预测的方式运行来增强可移植性。如果一个程序的行为不可预测,那么它在不同平台上的行为很可能会有所不同1。根据定义.
,这是不可移植的
健壮性因没有程序而增强 "peremptorily terminate"。根据定义.
,终止(例如崩溃)的程序是非健壮的
Java 中的异常和异常处理旨在解决可移植性和稳健性问题,尽管(显然)特定 异常不一定同时解决这两个问题。
I just know that the portability feature just involve the implementation of Java program (Write Once Run Anywhere)..
"Write Once Run Anywhere" 是一个明显不真实的营销口号。
- 从某种意义上说,Java 不会 运行 在没有人为其实现 JVM 的机器上,这是不正确的。
- 从平台差异(例如 Windows 和 Linux 上的 Java 运行ning 之间)的意义上说,Java 是不正确的不隐藏。任何没有适当考虑这些差异的程序都将无法移植。
- Java 有多个版本和发行版,并且为一个版本/发行版编写的 Java 程序可能与另一个版本/发行版不兼容。 (一般来说,旧的应用程序会 运行 在新的 Java 上,但反之则不然。)
但是,您的愿望是 Java 程序能够 运行 在多个平台和版本上无需重新编译,这一点是正确的。这是便携性的一方面。
1 - 换句话说,如果一个程序的行为是不可预测的,那么我们就无法预测它在不同平台上的行为是否相同。