我想在線程A中捕獲異常,然後將異常對象傳遞給線程B,並將其從線程B拋出。是否安全?安全拋出在另一個線程上創建的異常C#
線程A
try {
// Code that throws exceptions
} catch (Exception e) {
sendToOtherThread(e);
}
線程B
Exception e = receiveException();
throw e;
編輯
爲了清楚:我瞭解線程的作品,我應該如何通過從一個對象引用線程到另一個。問題更多的是從一個沒有創建它的線程拋出一個異常對象是安全的,還是有類本身或者.NET處理它的方式的問題。
是的,但(可能)很沒用,因爲你不能重新拋出,所以你會覆蓋原來的堆棧跟蹤。如果這不是你想要的,你必須包裝異常並拋出新的異常。 –
我很好奇你的'sendToOtherThread'和'receiveException'的實現。 –
讓我們只是說這兩個方法按原樣傳遞對象引用。所以兩個線程中的e都指向同一個對象。 –