Inspectopedia 2025.2 Help

Unnecessary call to 'Throwable.initCause()'

Reports calls to Throwable.initCause() where an exception constructor also takes a Throwable cause argument.

In this case, the initCause() call can be removed and its argument can be added to the call to the exception's constructor.

Example:

try { process(); } catch (RuntimeException ex) { RuntimeException wrapper = new RuntimeException("Error while processing"); wrapper.initCause(ex); // Unnecessary call to 'Throwable.initCause()' throw wrapper; }

A quick-fix is available to pass the cause argument to the constructor. After the quick-fix is applied:

try { process(); } catch (RuntimeException ex) { RuntimeException wrapper = new RuntimeException("Error while processing", ex); throw wrapper; }

Locating this inspection

By ID

Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.

UnnecessaryInitCause
Via Settings dialog

Path to the inspection settings via IntelliJ Platform IDE Settings dialog, when you need to adjust inspection settings directly from your IDE.

Settings or Preferences | Editor | Inspections | Java | Error handling

Suppressing Inspection

You can suppress this inspection by placing the following comment marker before the code fragment where you no longer want messages from this inspection to appear:

//noinspection UnnecessaryInitCause

More detailed instructions as well as other ways and options that you have can be found in the product documentation:

Inspection Details

By default bundled with:

IntelliJ IDEA 2025.2, Qodana for JVM 2025.2,

Last modified: 18 September 2025