There are a few STOP conditions that do not abide by some or all ON phrases. Here are two prominent ones:

  • The ABL code tries to use an inactive index.

    The AVM propagates the STOP condition up through the block that started the transaction (not just the subtransaction) regardless of any ON STOP phrases or CATCH blocks along the way.

  • The database connection is lost.

    When the connection is lost, any code that references the database causes subsequent errors to occur. The AVM attempts to avoid these cascading error conditions by raising the STOP condition and propagating it up to the first procedure or class level above which there are no references to the database. Any ON STOP phrases or CATCH blocks encountered along the way are ignored.