Uploaded image for project: 'Solder'
  1. Solder
  2. SOLDER-180

untangle processing of exceptions in stack

    Details

    • Type: Task
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: None
    • Fix Version/s: 3.0.0.Beta1
    • Component/s: Core
    • Labels:
      None
    • Estimated Difficulty:
      Medium

      Description

      Currently, the exceptions in the stack are being handled in tandem. All the breadth-first type visiting is happening for each exception in the stack, then all the depth-first type visiting is happening. Each exception should be processed in turn.

      Consider this case:

      The following exception chain is thrown: E1 -> E2 -> E3 (where "X -> Y" means X is caused by Y). Also, E3S is a superclass of E3. Let's assume there are handlers for all four exception types for both traversal modes (breadth-first and depth-first).

      The expected order of execution is as follows:

      E3S handler in the breadth-first traversal mode
      E3 handler in the breadth-first traversal mode
      E3 handler in the depth-first traversal mode
      E3S handler in the depth-first traversal mode

      E2 handler in the breadth-first traversal mode
      E2 handler in the depth-first traversal mode

      E1 handler in the breadth-first traversal mode
      E1 handler in the depth-first traversal mode

      We process the exceptions in the stack in the order E3, E2, E1 because we assume the cause, E3 is the most important exception.

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  lightguard Jason Porter
                  Reporter:
                  dan.j.allen Dan Allen
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  1 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: