This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.1)

 Documentation /  Mathematica /  Das Mathematica Buch /  Die Prinzipien von Mathematica /  Evaluierung von Ausdrücken /

Fortgeschrittenes Thema: Kontrolle unendlicher EvaluierungKompilieren von Mathematica-Ausdrücken

2.5.13 Fortgeschrittenes Thema: Unterbrechungen und Abbrüche

In Abschnitt 1.3.12 wurde beschrieben, wie sich eine Mathematica-Berechnung durch Betätigung entsprechender Tasten auf Ihrer Tastatur unterbrechen läßt.

Es kann sein, daß Sie derartige Unterbrechungen innerhalb eines Mathematica-Programms simulieren wollen. Im allgemeinen hat die Ausführung von Interrupt[ ] denselben Effekt wie die Betätigung von Interrupt-Tasten. Bei den meisten Systemen wird ein Menü mit Optionen eingeblendet (siehe Abschnitt 1.3.12).

Unterbrechungen und Abbrüche

Die Funktion Abort[ ] hat dieselbe Wirkung wie das Unterbrechen einer Berechnung mit anschließender Wahl der abort-Option im Interrupt-Menü.

Mit Abort[ ] können Sie in einem Programm einen „Not-Stop" implementieren. In beinahe allen Fällen sollten Sie jedoch versuchen, Funktionen wie Return und Throw einzusetzen, die zu kontrollierterem Verhalten führen.

Abort terminiert die Berechnung, deshalb wird nur das erste Print ausgeführt.

In[1]:= Print[a]; Abort[ ]; Print[b]

Out[1]=

Wenn Sie an irgendeinem Punkt während der Evaluierung eines Mathematica-Ausdrucks abbrechen, stellt Mathematica normalerweise die Evaluierung des gesamten Ausdrucks ein und gibt den Wert $Aborted zurück.

Abbrüche lassen sich jedoch mit der Funktion CheckAbort „auffangen". Tritt ein Abbruch während der Evaluierung von ausdr in CheckAbort[ausdr, fehlausdr] auf, dann gibt CheckAbort fehlausdr zurück, aber der Abbruch breitet sich nicht weiter aus. Funktionen wie Dialog setzen CheckAbort auf diese Weise ein, um die Wirkung von Abbrüchen einzudämmen.

CheckAbort fängt den Abbruch auf, druckt c und gibt den Wert abgebrochen zurück.

In[2]:= CheckAbort[Print[a]; Abort[ ]; Print[b], Print[c]; abgebrochen]

Out[2]=

Die Wirkung von Abort wird von CheckAbort aufgefangen, deshalb wird das zweite b ausgeführt.

In[3]:= CheckAbort[Print[a]; Abort[ ], Print[c]; abgebrochen]; Print[b]

Wenn Sie ausgefeilte Programme in Mathematica konstruieren, werden Sie mitunter garantieren wollen, daß ein bestimmter Code-Abschnitt in einem Programm nicht abgebrochen werden kann, weder interaktiv noch durch Aufruf von Abort. Mit der Funktion AbortProtect läßt sich ein Ausdruck evaluieren und vor Abbrüchen schützen, bis die Evaluierung des Ausdrucks vollständig beendet ist.

Das Abort wird aufgeschoben, bis AbortProtect beendet ist.

In[4]:= AbortProtect[Abort[ ]; Print[a]]; Print[b]

Out[4]=

Das CheckAbort sieht den Abbruch, aber breitet ihn nicht weiter aus.

In[5]:= AbortProtect[Abort[ ]; CheckAbort[Print[a], x]]; Print[b]

Sogar innerhalb AbortProtect wird CheckAbort alle auftretenden Abbrüche sehen und wird den entsprechenden fehlausdr zurückgeben. Außer wenn fehlausdr selber ein Abort[ ] enthält, werden die Abbrüche vom CheckAbort „absorbiert".

Fortgeschrittenes Thema: Kontrolle unendlicher EvaluierungKompilieren von Mathematica-Ausdrücken