FatalError

Kategorie: Entwickler
Ab Engineversion: 1.0 OC

Beschreibung

Gibt die angegebene Fehlermeldung und den Aufrufstack aus und bricht dann die ausführung der aktuellen Funktion ab. FatalError kann benutzt werden, um effektiv zu debuggen oder einen Fehler bei falschen Parametern auszugeben.

Syntax

bool FatalError(string message,  ...);

Parameter

message:
[opt] Fehlermeldung, die ausgegeben wird
...:
[opt] Zusätzliche Parameter, mit denen der Text formatiert wird

Beispiele

global func Explode(int level)
{
	if(!this) FatalError("Function Explode must be called from object context");
	...
}
Ein Teil der Implementierung der Explode-Funktion: Wenn Explode ohne Objektkontext aufgerufen wird, wird die Fehlermeldung und der Callstack in die Logs ausgegeben und die Ausführung wird abgebrochen. Das ist besser als folgendes Verhalten...
global func Explode(int level)
{
	if(!this) return;
	...
}
...weil Explode einfach ohne Meldung nichts tut. Bei einem solchen verhalten ist ein Fehler im aufrufenden Code schwieriger zu finden.
Zum Beispiel kann man, wenn man einen Fehler finden möchte, der Clonks unerklärlicherweise von der Landschaft verschwinden lässt, temporär RemoveObject überladen und darin einen fatalen Fehler auslösen. Sobald ein Clonk gelöscht werden sollte wird die Ausführung von RemoveObject abgebrochen und die Aufrufreihenfolge ausgegeben. (Und nicht vergessen die Funktion wieder zu löschen, wenn man fertig ist!)
global func RemoveObject()
{
	if(this->GetID() == Clonk) FatalError("See call stack for who is responsible for the removal of Clonks");
	return inherited(...);
}
Siehe auch: LogCallStack
Marky, 2018-04
Newton, 2011-09