此示例例程在內核窗口中生成兩個Throw :: nocatch警告消息。他們可以以某種方式處理嗎?由JLink或UseFrontEnd生成的未捕獲的投擲
該示例包含這些代碼用C創建的文件 「test.m」 的:\ TEMP:
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:
x1 = 0; While[x1 < 1000000,
If[Mod[x1, 100000] == 0,
Print["x1=" <> ToString[x1]]]; x1++];
NotebookSave[EvaluationNotebook[]];
NotebookClose[EvaluationNotebook[]];
此代碼:使用包含單個細胞產生的\ Temp \ run.nb從Windows命令提示符啓動,將以交互方式運行並保存其輸出。這是不可能實現使用UsingFrontEnd或MathKernel -script「C:\ Temp \ test.m」。
@ Leonid,它也可以在內核窗口中正常工作。這個問題似乎是-initfile方法和JLink之間的一些交互。沒有使用-script的消息,但這不符合我的要求。目前在M8.0.1 XP SP3上。明天會嘗試不同的機器。 –
對不起 - 我只是錯過了那些錯誤。我現在重現他們。不知道爲什麼之前沒有注意到他們。 –