Skip to content

Repository files navigation

ExceptionBundle

Build Status

Clean exception handling for your Symfony 2 bundles

ExceptionBundle helps you managing the exceptions of your bundle:

  • Generate exception subclasses from command line including a marker interface
  • Replace all global throw statements in a bundle with bundle specific exception classes

Why should you care?

  • The simpler exceptions are distinguishable by type, the simpler exceptional conditions are handled
  • Providing a marker interface all bundle exception classes implement allows clients to dramatically simplify exception handling
  • Usually, creating all the exception sub classes by hand is cumbersome, ExceptionBundle can help you

Usage

Generate bundle specific exception subclasses

This command will generate a bunch of exceptions

php app/console exception:generate app/src/MyVendor/MyBundle "MyVendor\MyBundle" ExceptionInterface RuntimeException DomainException

ls app/src/MyVendor/MyBundle/Exception

ExceptionInterface.php RuntimeException.php DomainException.php

cat app/src/MyVendor/MyBundle/Exception/RuntimeException.php

<?phpnamespaceMyVendor\MyBundle\Exception;
useRuntimeExceptionasBaseRuntimeException;
class RuntimeException extends BaseRuntimeException implements ExceptionInterface
{
}

You can also specify the shortcut "spl" to subclass all Spl Exceptions

Rewrite bundle exceptions

ExceptionBundle uses PHP Parser to rewrite all throw statements in a bundle code base.

cat app/src/MyVendor/MyBundle/MyClass.php

<?phpnamespaceMyVendor\MyBundle;
useRuntimeException;
...thrownewRuntimeException('Runtime error');
...thrownew \InvalidArgumentException('Invalid argument');

php app/console exception:rewrite app/src/MyVendor/MyBundle "MyVendor\MyBundle"

Rewrites the code to:

<?phpnamespaceMyVendor\MyBundle;
useMyVendor\MyBundle\Exception\InvalidArgumentException;
useMyVendor\MyBundle\Exception\RuntimeException;
...thrownewRuntimeException('Runtime error');
...thrownewInvalidArgumentException('Invalid argument');
...

Installation

Add internations/exception-bundle to your composer.json and edit AppKernel.php like this:

<?php...class AppKernel extends Kernel
{
publicfunctionregisterBundles()
{
$bundles = array(
...
);
if ($this->debug) {
$bundles[] = newInterNations\Bundle\ExceptionBundle\InterNationsExceptionBundle();
}
}
}

About

Helps making your Symfony Bundle a good Exception citizen. Yes, it’s opinionated.

Resources

Stars

21 stars

Watchers

38 watching

Forks

Releases

Packages

Used by

Contributors

Languages