class A { void foo() { try { } catch (IOException e) { doCleanup(); logger.log(e); } catch (SQLException e) { // Noncompliant [[sc=12;ec=26;secondary=4]] {{Combine this catch with the one at line 4, which has the same body.}} doCleanup(); logger.log(e); } catch (TimeoutException e) { // Compliant; block contents are different doCleanup(); throw e; } catch (IllegalArgumentException e) { // Noncompliant [[sc=11;ec=37;secondary=4]] {{Combine this catch with the one at line 4, which has the same body.}} doCleanup(); logger.log(e); } try { } catch (IOException | java.io.FileNotFoundException e) { doCleanup(); logger.log(e); } catch (SQLException e) { // Noncompliant [[sc=12;ec=26;secondary=22]] {{Combine this catch with the one at line 22, which has the same body.}} doCleanup(); logger.log(e); } catch (TimeoutException e) { // Compliant; block contents are different doCleanup(); throw e; } } }