Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Result und Fehlerbehandlung
Die Aws::WeaverRuntime::Result<T>
Klasse verwendet eine Bibliothek eines DrittanbietersOutcome
. Sie können das folgende Muster verwenden, um die zu überprüfen Result
und Fehler abzufangen, die von -API-Aufrufen zurückgegeben werden.
void DoBeginUpdate(Application& app) { Result<Transaction> transactionResult = Api::BeginUpdate(app); if (transactionResult) { Transaction transaction = std::move(transactionResult).assume_value(); /** * Do things with transaction ... */ } else { ErrorCode errorCode = WEAVERRUNTIME_EXPECT_ERROR(transactionResult); /** * Macro compiles to: * ErrorCode errorCode = transactionResult.assume_error(); */ } }
Result Makro der Steueranweisung
Innerhalb einer Funktion mit dem Rückgabetyp können Aws::WeaverRuntime::Result<T>
Sie das WEAVERRUNTIME_TRY
Makro anstelle des vorherigen Codemusters verwenden. Das Makro führt die an es übergebene Funktion aus. Wenn die übergebene Funktion fehlschlägt, gibt das Makro die umschließende Funktion einen Fehler zurück. Wenn die übergebene Funktion erfolgreich ist, fährt die Ausführung mit der nächsten Zeile fort. Das folgende Beispiel zeigt ein Umschreiben der vorherigen DoBeginUpdate()
Funktion. Diese Version verwendet das WEAVERRUNTIME_TRY
Makro anstelle der if-else Kontrollstruktur. Beachten Sie, dass der Rückgabetyp der Funktion istAws::WeaverRuntime::Result<void>
.
Aws::WeaverRuntime::Result<void> DoBeginUpdate(Application& app) { /** * Execute Api::BeginUpdate() * and return from DoBeginUpdate() if BeginUpdate() fails. * The error is available as part of the Result. */ WEAVERRUNTIME_TRY(Transaction transaction, Api::BeginUpdate(m_app)); /** * Api::BeginUpdate executed successfully. * * Do things here. */ return Aws::Success(); }
Wenn BeginUpdate()
fehlschlägt, kehrt das Makro frühzeitig mit einem Fehler DoBeginUpdate()
zurück. Sie können das WEAVERRUNTIME_EXPECT_ERROR
Makro verwenden, um die Aws::WeaverRuntime::ErrorCode
von abzurufenBeginUpdate()
. Das folgende Beispiel zeigt, wie die Update()
Funktion aufruft DoBeginUpdate()
und den Fehlercode bei einem Fehler abruft.
void Update(Application& app) { Result<void> doBeginUpdateResult = DoBeginUpdate(app); if (doBeginUpdateResult) { /** * Successful. */ } else { /** * Get the error from Api::BeginUpdate(). */ ErrorCode errorCode = WEAVERRUNTIME_EXPECT_ERROR(doBeginUpdateResult); } }
Sie können den Fehlercode von für eine Funktion BeginUpdate()
verfügbar machen, die aufruft, Update()
indem Sie den Rückgabetyp von Update()
in ändernAws::WeaverRuntime::Result<void>
. Sie können diesen Vorgang wiederholen, um den Fehlercode weiter unten im Aufruf-Stack zu senden.