guava icon indicating copy to clipboard operation
guava copied to clipboard

Make various classes catch `Exception` instead of `RuntimeException` even when only `RuntimeException` is theoretically possible.

Open copybara-service[bot] opened this issue 2 years ago • 0 comments

Make various classes catch Exception instead of RuntimeException even when only RuntimeException is theoretically possible.

In fact, because checked exceptions are a Java-source-language feature (rather than a JVM feature), it's possible to throw them when you're not "supposed to," either through tricky Java code or more naturally through other languages, such as Kotlin.

We have seen this happening a few times in tests. This causes exceptions to slip past the catch blocks that are meant to handle them. This could cause operations to hang, such as when one listener of a ListenableFuture throws an exception, preventing subsequent listeners (such as a listener that powers Futures.transform) from running.

I didn't cover every catch (RuntimeException ...) block in our codebase, but I tried to get the ones that looked most likely to be affected.

RELNOTES=Changed various classes to catch Exception instead of RuntimeException even when only RuntimeException is theoretically possible.

copybara-service[bot] avatar Dec 04 '23 17:12 copybara-service[bot]