Неперехваченный бросок, генерируемый JLink или UseFrontEnd

В этом примере подпрограмма генерирует два предупреждающих сообщения Throw :: nocatch в окне ядра. Можно ли их обработать каким-то образом?

Пример состоит из этого кода в файле "test.m", созданном в C: \ 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"

enter image description here

Приложение

Причина для использования 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 ".

5
задан Chris Degnen 9 November 2011 в 09:49
поделиться