sendError(Exception…) should set the exception attribute on the response, since error.jelly handles this nicely.
Simplifying JSONException handling in doConfigSubmit to use standard (?) error reporting.
Also sending the exception to the log, which is where plugin developers expect to see it.
(This is also necessary for the exception to be visible say from configRoundtrip in a functional test.
Otherwise you just see a FailingHttpStatusCodeException due to the 400 error code, with no details.)
Might actually suffice to just throw a ServletException wrapping the exception up the chain,
letting Stapler or the container handle it, but this change is more conservative.