跳转至

Getting information about the last error message

原文链接: https://www.nv5geospatialsoftware.com/Learn/Blogs/Blog-Details/getting-information-about-the-last-error-message

19243 Rate this article:

3.0

Getting information about the last error message

Anonym Friday, August 23, 2013

Dave Hulslander is teaching a Scientific Programming with IDL class this week, and this morning he passed along a question from a student: when a runtime error occurs, how can you programmatically get the name of the file and the line number where the error occurred?

For example, let's say I have the following program:



pro throw_error

   compile_opt idl2



   print, a ; #fail

end


When called, THROW_ERROR will fail at the PRINT statement because you can't print an undefined variable in IDL:



IDL> throw_error

% PRINT: Variable is undefined: A.

% Execution halted at: THROW_ERROR         4 C:\Users\mpiper\blog\posts\20130823-get-last-er

  ror-message\throw_error.pro

%                      $MAIN$       

You can see that IDL gives you the file and line in the file where the error occurred. But how can we get this programmatically?

Unfortunately, this information isn't included in !ERROR_STATE, the system variable that contains information on the last error that occurred, and also the place where I'd expect to find this information. Luckily, there a couple ways to get it. Here's one: use HELP with the LAST_MESSAGE and OUTPUT keywords:



IDL> help, /last_message, output=err_txt

IDL> help, err_txt

ERR_TXT         STRING    = Array[3]

IDL> print, err_txt

% PRINT: Variable is undefined: A.

% Execution halted at:  THROW_ERROR         4 C:\Users\mpiper\blog\posts\20130823-get-last-error-message\throw_error.pro

%                       $MAIN$ 

This is a little sloppy, but you can now use string processing routines to parse the error information out of the variable err_txt.

Digital Number, Radiance, and Reflectance Projection and Purpose: The True Size of Africa