Uncaught Throw генерируется 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"
добавление
Причина использования 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-C "\ Temp \ test.m".