От 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();
// ....