このサンプル ルーチンは、カーネル ウィンドウに 2 つの 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"
補遺
UsingFrontEnd ではなく UseFrontEnd を使用する理由は、通常は対話的に実行されるノートブックからの出力とメッセージを保持するために対話型フロント エンドが必要になる場合があるためです。たとえば、 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" を使用して達成することはできません。