exceptions.md

February 14, 2026 ยท View on GitHub

Exceptions

SlevomatCodingStandard.Exceptions.CatchExceptionsOrder ๐Ÿ”ง

Enforces alphabetical order of caught exception types within a catch block.

Sniff provides the following settings:

  • caseSensitive (default: false): compare exception names case-sensitively.

SlevomatCodingStandard.Exceptions.DeadCatch

This sniff finds unreachable catch blocks:

try {
	doStuff();
} catch (\Throwable $e) {
	log($e);
} catch (\InvalidArgumentException $e) {
	// unreachable!
}

SlevomatCodingStandard.Exceptions.DisallowNonCapturingCatch

This sniff forbids use of non-capturing catch introduced in PHP 8.0 PHP RFC: non-capturing catches.

SlevomatCodingStandard.Exceptions.ReferenceThrowableOnly ๐Ÿ”ง๐Ÿšง

In PHP 7.0, a Throwable interface was added that allows catching and handling errors in more cases than Exception previously allowed. So, if the catch statement contained Exception on PHP 5.x, it means it should probably be rewritten to reference Throwable on PHP 7.x. This sniff enforces that.

SlevomatCodingStandard.Exceptions.RequireNonCapturingCatch ๐Ÿ”ง

Sniff provides the following settings:

  • enable: either to enable or not this sniff. By default, it is enabled for PHP versions 8.0 or higher.

It requires non-capturing catch when the variable with exception is not used.