[問題] How to us C++ Exception in Asynchronous I/O

看板C_and_CPP (C/C++)作者 (小乖)時間15年前 (2010/12/16 20:34), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/1
我在用 boost 的 asio 來處理網路的 message 我用的是非同步模式 pseudo code 如下 void handle_read_body(error_code& error) { int result = ntohs(ack->Result); // 得到網路回傳結果 //if( result != 0) throw(error_ack_code("SendLogClient: Ack fail")); // force to throw } int main() { // initial io_service object try{ socket_.async_write(endpoint,handle_read_body,..)); sleep(100); // wait for catch happend }catch(...){ // catch exception } } 我對於 C++ exception 的了解,exception 會 rewind 堆疊, 而對於非同步的 I/O,main 所在的堆疊跟 handle_read_body 所在的堆疊 不一樣。 因此若是 handle_read_body 發生例外,則程式會直接跳出, main 捕捉不到。 我想請問的是,若是用非同步I/O的寫法來處理的話,能夠用 C++ 例外處理的方式嗎 怎樣才能夠捕捉 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.96.34

12/16 22:04, , 1F
更正~ 上述的 pesudo code 可以捕捉到
12/16 22:04, 1F

12/16 22:04, , 2F
但是加上 thread 的話不行
12/16 22:04, 2F
文章代碼(AID): #1D2WTpYK (C_and_CPP)
文章代碼(AID): #1D2WTpYK (C_and_CPP)