Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengekalkan Jejak Tindanan Apabila Melemparkan Semula InnerExceptions dalam C#?

Bagaimanakah Saya Boleh Mengekalkan Jejak Tindanan Apabila Melemparkan Semula InnerExceptions dalam C#?

DDD
Lepaskan: 2025-01-17 07:17:09
asal
808 orang telah melayarinya

How Can I Preserve Stack Traces When Rethrowing InnerExceptions in C#?

Mengekalkan Jejak Tindanan Asal Semasa Melontar Semula Pengecualian Dalaman dalam C#

Penyahpepijatan dan penyelesaian masalah menjadi lebih sukar apabila surih tindanan asal hilang apabila melontar semula pengecualian dalaman dalam C#. Nasib baik, kelas ExceptionDispatchInfo, yang diperkenalkan dalam .NET 4.5, menyediakan penyelesaian.

Penyelesaian:

Untuk mengekalkan surih tindanan yang lengkap, gunakan ExceptionDispatchInfo seperti ini:

<code class="language-csharp">try
{
    task.Wait();
}
catch (AggregateException ex)
{
    ExceptionDispatchInfo.Capture(ex.InnerException).Throw();
}</code>
Salin selepas log masuk

Penjelasan:

ExceptionDispatchInfo menangkap pengecualian dan keadaan semasanya, termasuk surih tindanan, membolehkan anda membuangnya semula kemudian tanpa mengubah maklumat ini. Ini tidak terhad kepada AggregateException; ia berfungsi dengan mana-mana jenis pengecualian. Keupayaan ini amat berguna dengan kata kunci await, yang sering membuka pengecualian dalaman daripada contoh AggregateException untuk meningkatkan kesalingoperasian antara kod tak segerak dan segerak.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Jejak Tindanan Apabila Melemparkan Semula InnerExceptions dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan