Task #17737

Milestone #17719: Booster operational test of one crate alongside existing BPM system

bpmd error facility

Added by John Diamond over 3 years ago. Updated over 3 years ago.

Work in progress
Start date:
Due date:
% Done:


Estimated time:
24.00 h
Spent time:


Design and implement a smart error handling facility for bpmd.


#1 Updated by John Diamond over 3 years ago

  • Tracker changed from Milestone to Task

#2 Updated by John Diamond over 3 years ago

One idea is a family of C++ exceptions for specific BPM error conditions and a function for converting from a BPM exception (NO MEASUREMENT) to an ACNET error (BPM NO DATA).

#3 Updated by John Diamond over 3 years ago

  • Status changed from Assigned to Work in progress
  • % Done changed from 0 to 50

Implemented an exception class called BPMError that ADInstBPM can use for throwing exceptions that identify a subsystem and error code much like ACNET/MOOC.

Defined several global constant BPMErrors in defs.H. Went through code line-by-line and replaced runtime_error throw's with the appropriate BPMError instance.

Modified ACNET classes to catch certain BPMErrors and re-throw the appropriate AcnetError that the front end framework uses to signal error conditions to ACNET. Also added several global constants that define various BPM error codes from the rbpm project that are already understood by ACNET.

We'll see if this system works well and will update this ticket with ideas for improvement.

#4 Updated by John Diamond over 3 years ago

Seems to be adequate for now, bumping % done to 100% but keeping the status at "work in progress".

#5 Updated by John Diamond over 3 years ago

  • % Done changed from 50 to 100

Also available in: Atom PDF