Saya ingin Visual Studio rusak ketika pengecualian yang ditangani terjadi (yaitu saya tidak hanya ingin melihat pesan "Kesempatan pertama", saya ingin men-debug pengecualian yang sebenarnya).
mis. Saya ingin debugger rusak kecuali:
try
{
System.IO.File.Delete(someFilename);
}
catch (Exception)
{
//we really don't care at runtime if the file couldn't be deleted
}
Saya menemukan catatan ini untuk Visual Studio.NET:
1) Dalam VS.NET, buka Menu Debug >> "Pengecualian ..." >> "Pengecualian Runtime Bahasa Umum" >> "Sistem" dan pilih "System.NullReferenceException"
2) Di bagian bawah dialog itu ada kotak grup "Ketika pengecualian dilemparkan:", pilih "Break into the debugger"
3) Jalankan skenario Anda. Ketika pengecualian dilemparkan, debugger akan berhenti dan memberi tahu Anda dengan dialog yang mengatakan sesuatu seperti: "Pengecualian dari tipe" System.NullReferenceException "telah dilemparkan. [Hancurkan] [Lanjutkan]"
Tekan [Hancurkan]. Ini akan menempatkan Anda pada baris kode yang menyebabkan masalah.
Tetapi mereka tidak berlaku untuk Visual Studio 2005 (tidak ada opsi Pengecualian pada menu Debug ).
Apakah ada yang tahu di mana menemukan dialog opsi ini di Visual Studio bahwa kotak grup " Ketika pengecualian dilemparkan ", dengan opsi untuk " Break into the debugger "?
Pembaruan: Masalahnya adalah menu Debug saya tidak memiliki item Pengecualian . Saya mengkustomisasi menu untuk menambahkannya secara manual.
sumber
Jawaban:
Dengan solusi terbuka, buka opsi menu Debug - Pengecualian ( Ctrl+ D, E). Dari sana Anda dapat memilih untuk istirahat pada Thrown atau Pengguna-tidak ditangani pengecualian yang .
EDIT: Contoh saya sudah diatur dengan "profil" C # mungkin tidak ada untuk profil lain?
sumber
Common Language Runtime Exceptions
> di<All Common Language Runtime Exceptions not in this list>
bawah Visual Studio 2017 dan semua impian saya yang paling liar menjadi kenyataan.Ada jendela 'pengecualian' di VS2005 ... coba Ctrl+ Alt+ Eketika men-debug dan klik kotak centang 'Dilemparkan' untuk pengecualian yang ingin Anda hentikan.
sumber
Butuh waktu beberapa saat untuk menemukan tempat baru untuk pengaturan expection, oleh karena itu jawaban baru.
Sejak Visual Studio 2015 Anda mengontrol Pengecualian mana yang harus dihentikan di Jendela Pengaturan Pengecualian (Debug-> Windows-> Pengaturan Pengecualian). Pintasannya masih Ctrl- Alt- E.
Cara paling sederhana untuk menangani pengecualian khusus adalah memilih "semua pengecualian yang tidak ada dalam daftar ini".
Ini screenshot dari versi bahasa Inggris:
Ini screenshot dari versi Jerman:
sumber
Dari Visual Studio 2015 dan selanjutnya, Anda perlu pergi ke dialog "Pengaturan Pengecualian" ( Ctrl+ Alt+ E) dan mencentang "Pengecualian Runtime Bahasa Biasa" (atau Pengecualian Runtime Bahasa Biasa "(atau yang spesifik yang Anda inginkan yaitu
ArgumentNullException
) untuk membuatnya berhenti pada pengecualian yang ditangani .Langkah 1 Langkah 2
sumber
Periksa Mengelola Pengecualian dengan halaman Debugger , ini menjelaskan cara mengaturnya.
Pada dasarnya, ini adalah langkah-langkahnya (selama debugging):
Pada menu Debug, klik Pengecualian.
Di kotak dialog Pengecualian, pilih Diberikan untuk seluruh kategori pengecualian, misalnya, Pengecualian Waktu Runtime Bahasa Umum.
-atau-
Perluas node untuk kategori pengecualian, misalnya, Pengecualian Waktu Runtime Bahasa Umum, dan pilih Lempar untuk pengecualian tertentu dalam kategori itu.
sumber
Teknik yang saya gunakan adalah sesuatu seperti berikut ini. Tentukan variabel global yang dapat Anda gunakan untuk satu atau beberapa blok tangkap percobaan tergantung pada apa yang Anda coba debug dan gunakan struktur berikut:
Saya menemukan ini memberi saya sedikit lebih banyak fleksibilitas dalam hal pengujian karena masih ada beberapa pengecualian saya tidak ingin IDE untuk istirahat.
sumber
catch(){/*handle or not*/ throw; } // throw without any exception specified will rethrow original exception with original callstack etc
Dokumentasi online sepertinya sedikit tidak jelas, jadi saya hanya melakukan tes kecil. Memilih untuk istirahat di Dilemparkan dari kotak Pengecualian dialog menyebabkan eksekusi program untuk istirahat pada setiap pengecualian, ditangani atau tidak tertangani. Jika Anda ingin memecah pengecualian yang ditangani saja, tampaknya satu-satunya jalan Anda adalah melalui kode Anda dan meletakkan breakpoint pada semua pengecualian yang ditangani. Ini sepertinya sedikit berlebihan, jadi mungkin lebih baik menambahkan pernyataan debug setiap kali Anda menangani pengecualian. Kemudian ketika Anda melihat output itu, Anda dapat mengatur breakpoint pada baris itu dalam kode.
sumber