APIv3 - Use the Exception rather than the rule #24977
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
Following up on #19323 this converts APIv3 in Smarty and Ajax to use exceptions instead of
CRM_Core_TemporaryErrorScope
which is self-described as "An evil, evil work-around", so I'm gonna say we're better off not using it.Before
The "evil, evil work-around" was causing problems like this:
CRM.api3('Extension', 'install', {key: 'org.civicrm.search_kit'});
After
SearchKit can be installed via ajax without errors, and there's generally less evil in the world.
Technical Details
Now that PEAR throws exceptions there is no need to override the PEAR error handler and it was interfering with
try/catch
handlers within the api call.