Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Resultdan penanganan kesalahan
Aws::WeaverRuntime::Result<T>
Kelas menggunakanOutcome
pustaka pihak ketiga. Anda dapat menggunakan pola berikut untuk memeriksaResult
dan catch kesalahan yang dikembalikan oleh panggilan API.
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(); */ } }
Resultpernyataan kontrol makro
Di dalam fungsi dengan tipe kembaliAws::WeaverRuntime::Result<T>
, Anda dapat menggunakanWEAVERRUNTIME_TRY
makro bukan pola kode sebelumnya. Makro akan menjalankan fungsi yang dilewatkan ke sana. Jika fungsi berlalu gagal, makro akan membuat fungsi melampirkan kembali kesalahan. Jika fungsi berlalu berhasil, eksekusi berlangsung ke baris berikutnya. Contoh berikut menunjukkan penulisan ulang dariDoBeginUpdate()
fungsi sebelumnya. Versi ini menggunakanWEAVERRUNTIME_TRY
makro bukan strukturif-else kontrol. Perhatikan bahwa jenis kembalinya fungsi iniAws::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(); }
JikaBeginUpdate()
gagal, makro membuatDoBeginUpdate()
kembali lebih awal dengan kegagalan. Anda dapat menggunakanWEAVERRUNTIME_EXPECT_ERROR
makro untuk mendapatkanAws::WeaverRuntime::ErrorCode
dariBeginUpdate()
. Contoh berikut menunjukkan bagaimanaUpdate()
fungsi panggilanDoBeginUpdate()
dan mendapatkan kode kesalahan pada kegagalan.
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); } }
Anda dapat membuat kode kesalahan dariBeginUpdate()
tersedia untuk fungsi yang panggilanUpdate()
dengan mengubah jenis kembaliUpdate()
keAws::WeaverRuntime::Result<void>
. Anda dapat mengulangi proses ini untuk terus mengirim kode kesalahan lebih jauh ke bawah tumpukan panggilan.