MWExceptionHandler: Restore delegation to MWException::report
authorBryan Davis <bd808@wikimedia.org>
Fri, 30 Sep 2016 21:50:40 +0000 (15:50 -0600)
committerBryan Davis <bd808@wikimedia.org>
Fri, 30 Sep 2016 21:55:45 +0000 (15:55 -0600)
Follow up to 00bee0297. Many MWException subclasses override
MWException::report to do things like special logging and setting the
HTTP response status code. We need to keep calling those methods until
MWExceptionRenderer knows how to handle all of them.

Bug: T147098
Change-Id: I2c90e2d9e9b019357458c7e14a3d602b591c6f5b

includes/exception/MWExceptionHandler.php

index 8359846..797b3af 100644 (file)
@@ -62,7 +62,15 @@ class MWExceptionHandler {
        protected static function report( $e ) {
                try {
                        // Try and show the exception prettily, with the normal skin infrastructure
-                       MWExceptionRenderer::output( $e, MWExceptionRenderer::AS_PRETTY );
+                       if ( $e instanceof MWException ) {
+                               // Delegate to MWException until all subclasses are handled by
+                               // MWExceptionRenderer and MWException::report() has been
+                               // removed.
+                               $e->report();
+                       } else {
+                               MWExceptionRenderer::output(
+                                       $e, MWExceptionRenderer::AS_PRETTY );
+                       }
                } catch ( Exception $e2 ) {
                        // Exception occurred from within exception handler
                        // Show a simpler message for the original exception,