В этом примере подпрограмма генерирует два предупреждающих сообщения 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"
Приложение
Причина для использования 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 ".