Source: http://spec-zone.ru/Java/JLS/3/exceptions.html
Timestamp: 2017-01-24 11:09:25
Document Index: 617431535

Matched Legal Cases: ['§8', '§8', '§15', '§15', '§14', '§11', '§12', '§12', '§12', '§12']

A throw statement can throw an exception type E iff the static type of the throw expression is E or a subtype of E, or the thrown expression can throw E. An explicit constructor invocation statement can throw an exception type E iff either:
11.2.3 Exception Checking It is a compile-time error if a method or constructor body can throw some exception type E when both of the following hold:
It is a compile-time error if a static initializer (§8.7) or class variable initializer within a named class or interface §8.3.2, can throw a checked exception type. It is compile-time error if an instance variable initializer of a named class can throw a checked exception unless that exception or one of its supertypes is explicitly declared in the throws clause of each constructor of its class and the class has at least one explicitly declared constructor. An instance variable initializer in an anonymous class (§15.9.5) can throw any exceptions. It is a compile-time error if a catch clause catches checked exception type E1 but there exists no checked exception type E2 such that all of the following hold:
If within a constructor or an instance initializer or the initializer for an instance variable, then the caller is the class instance creation expression (§15.9) or the method invocation of newInstance that was executed to cause an object to be created. If within a static initializer or an initializer for a static variable, then the caller is the expression that used the class or interface so as to cause it to be initialized.
In situations where it is desirable to ensure that one block of code is always executed after another, even if that other block of code completes abruptly, a try statement with a finally clause (§14.20.2) may be used. If a try or catch block in a try-finally or try-catch-finally statement completes abruptly, then the finally clause is executed during propagation of the exception, even if no matching catch clause is ultimately found. If a finally clause is executed because of abrupt completion of a try block and the finally clause itself completes abruptly, then the reason for the abrupt completion of the try block is discarded and the new reason for abrupt completion is propagated from there.
An invocation of the stop methods of class Thread or ThreadGroup An internal error (§11.5.2) in the Java virtual machine
The linking process is described in §12.3. The class verification process is described in §12.3.1. The class preparation process is described in §12.3.2. The class initialization process is described in §12.4.