Nesting ``++try++``/``++catch++`` or ``++@try++``/``++@catch++`` blocks severely impacts the readability of source code because it makes it too difficult to understand which block will catch which exception.


This {cpp} example also applies to Objective-C.

== Noncompliant Code Example

----
try {
  try {                                     // Noncompliant
    doSomething();
  } catch (RuntimeException e) {
    /* Ignore */
  }

  doSomethingElse();
} catch (Exception e) {
  /* ... */
}
----

== Compliant Solution

----
try {
  dedicatedMethod();                        // Compliant
  doSomethingElse();
} catch (Exception e) {
  /* ... */
}

/* ... */

private void dedicatedMethod() {
  try {                                     // Compliant
    doSomething();
  } catch (RuntimeException e) {
    /* Ignore */
  }
}
----

ifdef::env-github,rspecator-view[]
'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]
