Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method HandleQuillError (LibOpt_Task task, QuillError e) 
 | 
{ 
 | 
  Description: 
 | 
  [* 
 | 
    When an error happens in user code we catch it in the same transaction. 
 | 
     
 | 
    We call this method with the `QuillError` we caught on the component that caused the error. 
 | 
    By default we create an error snapshot in this method. 
 | 
     
 | 
    Then we call this method again on all previous components that were executed in this transaction as well, except that the `QuillError` is a null instance. 
 | 
     
 | 
    After calling these methods we always rollback the transaction. So the only thing you can do in this method is change the snapshot tree, as these will be preserved. 
 | 
  *] 
 | 
  TextBody: 
 | 
  [* 
 | 
    if( not isnull( task.SnapshotComponent() ) ) 
 | 
    { 
 | 
      task.SnapshotComponent().Finalize(); 
 | 
    } 
 | 
     
 | 
    is_captured := false; 
 | 
    err := LibOpt_SnapshotError::Read( e, task, is_captured ); 
 | 
    if( not is_captured and not LibOpt_SnapshotError::IsUserError( Translations::LibOpt_Optimization_CapturedException_Regex(), err ) ) 
 | 
    { 
 | 
      this.HandleException( err, task, false ); 
 | 
    } 
 | 
  *] 
 | 
} 
 |