class FinallyDemo {
// Throw an exception out of the method.
try {
System.
out.
println("inside procA"); } finally {
System.
out.
println("procA's finally"); } }
// Return from within a try block.
static void procB() {
try {
System.
out.
println("inside procB"); return;
} finally {
System.
out.
println("procB's finally"); } }
// Execute a try block normally.
static void procC() {
try {
System.
out.
println("inside procC"); } finally {
System.
out.
println("procC's finally"); } }
public static void main
(String args
[]) { try {
procA();
System.
out.
println("Exception caught"); }
procB();
procC(); }
}
Y2xhc3MgRmluYWxseURlbW8gewogIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBvdXQgb2YgdGhlIG1ldGhvZC4KICBzdGF0aWMgdm9pZCBwcm9jQSgpIHRocm93cyBJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uewogICAgdHJ5IHsKICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpbnNpZGUgcHJvY0EiKTsKICAgICAgdGhyb3cgbmV3IElsbGVnYWxBY2Nlc3NFeGNlcHRpb24oImRlbW8iKTsKICAgIH0gZmluYWxseSB7CiAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigicHJvY0EncyBmaW5hbGx5Iik7Cn0gfQogIC8vIFJldHVybiBmcm9tIHdpdGhpbiBhIHRyeSBibG9jay4KICBzdGF0aWMgdm9pZCBwcm9jQigpIHsKICAgIHRyeSB7CiAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaW5zaWRlIHByb2NCIik7CiAgICAgIHJldHVybjsKICAgIH0gZmluYWxseSB7CiAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigicHJvY0IncyBmaW5hbGx5Iik7Cn0gfQogIC8vIEV4ZWN1dGUgYSB0cnkgYmxvY2sgbm9ybWFsbHkuCiAgc3RhdGljIHZvaWQgcHJvY0MoKSB7CiAgICB0cnkgewogICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImluc2lkZSBwcm9jQyIpOwogICAgfSBmaW5hbGx5IHsKICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJwcm9jQydzIGZpbmFsbHkiKTsKfSB9CiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgewogICAgdHJ5IHsKICAgICAgcHJvY0EoKTsKICAgIH0gY2F0Y2ggKElsbGVnYWxBY2Nlc3NFeGNlcHRpb24gZSkgewogICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkV4Y2VwdGlvbiBjYXVnaHQiKTsKICAgIH0KcHJvY0IoKTsKcHJvY0MoKTsgfQp9Cg==