Wie fangen Sie die Ausnahmen von der Aktion mit anonymen Methode in c#?
Kann man erklären, warum bekomme ich nicht die Ausnahme von Schlag-code:
Action <Exception> myact = ( ) => {
throw new Exception( "test" );
};
Task myactTask = Task.Factory.StartNew( ( ) => myact);
try {
myactTask.Wait( );
Console.WriteLine( myactTask.Id.ToString( ) );
Console.WriteLine( myactTask.IsCompleted.ToString( ) );
}
catch( AggregateException ex ) {
throw ex;
}
auf der anderen Seite, wenn die ersetzen-Aktion "myact" mit der Methode "myact()" dann habe ich eine Ausnahme und es kann vorgeführt mit try-catch-block.
public static void myact( ) {
throw new Exception( "test" );
}
- Ich bin mir nicht sicher, warum die Ausnahme im zweiten Fall würde gefangen werden, da der exception-handler ist nur abfangen
AggregateException
und nicht mehr die AllgemeineException
. Auch die Berufung auf die anonyme Methode ist außerhalb dietry/catch
block. Dies ist eine genaue Darstellung des Codes? - Ich versuchte, mit einer Ausnahme, aber es hat nicht funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese nicht ausführen deiner Aktion, es ist eine Funktion zurückgibt, die einen Verweis auf Ihre Aktion.
Diese wird es ausführen und werfen/fangen Sie die Ausnahme.
Action <Exception> myact = ( ) => { throw new Exception( "test" ); };
nicht kompilieren für mich, ich habe es nach meiner Frage und Aufruf() => myact(new Exception("Test")
geklappt, so wie es aussieht, die hat in der Tat die Aktion auszuführen?Dies geschieht, weil Sie fangen nur ein
AggregateException
keinException
. Ein weiteres problem ist, dass man nicht wirklich ausführen von code inTask.Factory.StartNew
.Ändern Sie Ihren code so etwas wie:
Allem coppied ich den code und es hat nicht kompiliert, aber die meisten der Antworten sind richtig, es ist unten zu, was Sie versuchen, zu fangen.