跳转至

获取关于最后一条错误消息的信息

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

19243 文章评分:

3.0

获取关于最后一条错误消息的信息

匿名 2013年8月23日,星期五

Dave Hulslander 本周正在教授 IDL 科学编程 课程,今天早上他转达了一位学生的问题:当发生运行时错误时,如何以编程方式获取发生错误的文件名和行号?

例如,假设我有以下程序:



pro throw_error

   compile_opt idl2



   print, a ; #fail

end


当调用 THROW_ERROR 时,它会在 PRINT 语句处失败,因为你不能在 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$       

你可以看到 IDL 给出了错误发生的文件名和文件中的行号。但是我们如何以编程方式获取这些信息呢?

不幸的是,这些信息并未包含在 !ERROR_STATE 这个系统变量中,该变量包含了关于发生的最后一条错误的信息,也是我希望找到此信息的地方。幸运的是,有几种方法可以获取它。这里是一种:使用带有 LAST_MESSAGE 和 OUTPUT 关键字的 HELP



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$ 

这有点粗糙,但你现在可以使用字符串处理例程来从变量 err_txt 中解析出错误信息。

数字数值、辐射亮度和反射率 投影与目的:非洲的真实大小