== Why is this an issue?

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

[source,cpp]
----
try {
  try {                                     // Noncompliant
    doSomething();
  } catch (RuntimeException e) {
    /* Ignore */
  }

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

=== Compliant solution

[source,cpp]
----
try {
  dedicatedMethod();                        // Compliant
  doSomethingElse();
} catch (Exception e) {
  /* ... */
}

/* ... */

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

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]

endif::env-github,rspecator-view[]
