此示例例程在内核窗口中生成两条 Throw::nocatch 警告消息。可以以某种方式处理它们吗?
该示例包含在 C:\Temp 中创建的文件“test.m”中的此代码:
Needs["JLink`"];
$FrontEndLaunchCommand = "Mathematica.exe";
UseFrontEnd[NotebookWrite[CreateDocument[], "Testing"]];
然后将这些命令粘贴并在 Windows 命令提示符处运行:
PATH = C:\Program Files\Wolfram Research\Mathematica\8.0\;%PATH%
start MathKernel -noprompt -initfile "C:\Temp\test.m"
附录
使用 UseFrontEnd 而不是 UsingFrontEnd 的原因是,可能需要交互式前端来保存通常以交互方式运行的笔记本的输出和消息。例如,使用 C:\Temp\test.m 修改如下:
Needs["JLink`"];
$FrontEndLaunchCommand="Mathematica.exe";
UseFrontEnd[
nb = NotebookOpen["C:\\Temp\\run.nb"];
SelectionMove[nb, Next, Cell];
SelectionEvaluate[nb];
];
Pause[10];
CloseFrontEnd[];
和一个笔记本 C:\Temp\run.nb 使用包含以下内容的单个单元格创建:
x1 = 0; While[x1 < 1000000,
If[Mod[x1, 100000] == 0,
Print["x1=" <> ToString[x1]]]; x1++];
NotebookSave[EvaluationNotebook[]];
NotebookClose[EvaluationNotebook[]];
此代码从 Windows 命令提示符启动,将以交互方式运行并保存其输出。这是无法使用 UsingFrontEnd 或 MathKernel -script "C:\Temp\test.m" 来实现的。