;+
;Procedure: batch_procedure_error_handler
;                
;Purpose:

;This routine catches errors for procedure calls, to prevent individual routine
;failures from killing the whole process
;
;Inputs:
;  proc_name: is a string naming the procedure to be called
;  date: The date for the call(positional argument is common to all calls being error handled
;  _extra: is used to allow any set of keyword parameters for the call
;  arg0-arg9: Support for up to 10 positional parameters.  How many are used depends upon the procedure
;
;
;Example:
;  check_state_files_error_handler,'map_themis_state_south_t96','2007-03-23',/gifout,noview=noview,/move
;
; $LastChangedBy: pcruce $
; $LastChangedDate: 2009-12-15 17:19:31 -0800 (Tue, 15 Dec 2009) $
; $LastChangedRevision: 7014 $
; $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/thmsoc/trunk/idl/thmsoc/asi/batch_procedure_error_handler.pro $
;-
pro batch_procedure_error_handler,proc_name,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,_extra=ex

   catch,err ;jumps back to here on error
   if err eq 0 then begin
     ;initial execution(non-error state)
     case n_params() of 
       1 :call_procedure,proc_name,_extra=ex
       2 :call_procedure,proc_name,arg0,_extra=ex
       3 :call_procedure,proc_name,arg0,arg1,_extra=ex
       4 :call_procedure,proc_name,arg0,arg1,arg2,_extra=ex
       5 :call_procedure,proc_name,arg0,arg1,arg2,arg3,_extra=ex
       6 :call_procedure,proc_name,arg0,arg1,arg2,arg3,arg4,_extra=ex
       7 :call_procedure,proc_name,arg0,arg1,arg2,arg3,arg4,arg5,_extra=ex
       8 :call_procedure,proc_name,arg0,arg1,arg2,arg3,arg4,arg5,arg6,_extra=ex
       9 :call_procedure,proc_name,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,_extra=ex
       10:call_procedure,proc_name,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,_extra=ex
       11:call_procedure,proc_name,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,_extra=ex
       else: dprint,'Number of parameters unsupported by batch_procedure_error_handler, modify this procedure to add more'
     endcase
   endif else begin
     ;handle error,(basically just output and skip)
     dprint,'ERROR Caught: ' + !error_state.msg
   endelse

end