От JVMS глава 6.3:
[...] любой из подклассов
VirtualMachineError, определенных ниже [InternalError,OutOfMemoryError,StackOverflowError,UnknownError], может быть сброшен в любое время во время операции виртуальной машины Java
Как JVMS определяет фразу "в любое время во время работы виртуальной машины Java"?
Как текущие JVM интерпретируют эту фразу?
В частности, означает ли это, что четыре ошибки, java.lang.InternalError, java.lang.OutOfMemoryError, java.lang.StackOverflowError и java.lang.UnknownError, может быть сброшено между операторами?
// ....
A(); B(); C();
try {
// nothing
} catch (InternalError | OutOfMemoryError | StackOverflowError | UnknownError e) {
// may occur?
}
D(); E(); F();
try {
; // semi-colon
} catch (InternalError | OutOfMemoryError | StackOverflowError | UnknownError e) {
// may occur?
}
G(); H(); I();
try {
; ; ;; ;;;;; ; ; ;;; ;; ;; ;; ;; ; ;; ; ;; // ... semi-colons
} catch (InternalError | OutOfMemoryError | StackOverflowError | UnknownError e) {
// may occur?
}
J(); K(); L();
// ....