/*
* Copyright 2013 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.errorprone.bugpatterns.testdata;
import java.io.IOException;
/**
* @author cushon@google.com (Liam Miller-Cushon)
*/
public class FinallyNegativeCase2 {
public void test1(boolean flag) {
try {
return;
} finally {
}
}
public void test2() throws Exception {
try {
} catch (Exception e) {
throw new Exception();
} finally {
}
}
public void returnInAnonymousClass(boolean flag) {
try {
} finally {
new Object() {
void foo() {
return;
}
};
}
}
public void throwFromNestedTryInFinally() throws Exception {
try {
} finally {
try {
throw new Exception();
} catch (Exception e) {
} finally {
}
}
}
public void nestedTryInFinally2() throws Exception {
try {
} finally {
try {
// This exception will propogate out through the enclosing finally,
// but we don't do exception analysis and have no way of knowing that.
// Xlint:finally doesn't handle this either, since it only reports
// situations where the end of a finally block is unreachable as
// definied by JLS 14.21.
throw new IOException();
} catch(Exception e) {
}
}
}
}