MeasurementError exists in meas_base as a way ofr deeply-buried low-level code to set both the general failure flag for an algorithm and a specific flag indicating the kind of failure, without having access to the SourceRecord object or passing the failure mode through intervening layers of code.
Recent profiling on macOS ARM (e.g.
DM-35206) has revealed substantial performance penalties for this kind of exception-based control flow, and it's not a good pattern to begin with; we should just remove MeasurementError, after first removing its usage from the various plugins.
In many cases, MeasurementError is used even by code that already has access to the SourceRecord, and that will be easy to fix: such code should set the appropriate flag bits directly (often by delegating to FlagHandler, at least in C++), and then return early.
Since actually removing MeasurementError is blocked as any plugin is still using it, this ticket can serve as an umbrella ticket by being blocked by other tickets that remove specific uses.