Ich habe Code ähnlich:Wie kann man Fehler erkennen, die bei Timer-Funktionsaufrufen ausgelöst werden?
timer = new Timer(new Duration(milliseconds: 1000),() => (throw new TimeoutException('Callback not invoked!')));
while (timer.isActive){
await new Future.delayed(const Duration(milliseconds: 1),() => "1");
}
print('this should not be reached if the exception is raised');
an anderer Stelle ich einen Asynchron-Rückruf haben, die Anrufe:
timer.cancel();
In dem Fall, dass der Rückruf es funktioniert aufgerufen wird, da der Rückruf den Timer annulliert.
Allerdings bin ich nicht wirklich sicher, wie man die TimeoutException
in diesem Fall tatsächlich fängt, wenn es nicht abgebrochen wird, weil es scheint, dass die Ausnahme in einem anderen Bereich als meine Hauptfunktion ausgelöst wird. Dies bedeutet, dass die Programmausführung fortgesetzt wird, obwohl
Gibt es eine Möglichkeit, eine Art try/catch zu machen oder irgendwie die obige Timeout-Ausnahme zu behandeln? Oder ein besserer Weg zu tun, was ich versuche zu tun?
Verwenden von Dart 1.19.1.
Sind Sie sicher, dass Sie das 'Timer' brauchen? Was ist mit der Verwendung von 'Future.delayed(). Timeout ...'? –
@ GünterZöchbauer Wenn das eine bessere Option ist, bin ich mehr als bereit, sie zu benutzen. Ich habe ursprünglich den Timer verwendet, weil ich tatsächlich verfolgen kann, wie lange der gesamte Rückruf dauert, aber nicht in der Lage war, das mit einer zukünftigen Operation zu arbeiten. – enderland