获取关于最后一条错误消息的信息
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 中解析出错误信息。