Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pernyataan, atau pernyataan Assert, menguji kondisi, yang Anda tetapkan sebagai argumen untuk pernyataan Assert. Jika kondisi bernilai benar, tidak ada tindakan yang terjadi. Jika kondisi bernilai salah, pernyataan gagal. Jika Anda sedang menjalankan build debug, program Anda akan memasuki mode jeda.
Dalam topik ini
Pernyataan di Namespace System.Diagnostics
Metode Debug.Assert
Persyaratan Pelacakan dan Debug
Mengatur pernyataan dalam file konfigurasi
Pernyataan Asertif dalam Namespace System.Diagnostics
Di Visual Basic dan Visual C#, Anda dapat menggunakan Assert metode dari Debug atau Trace, yang ada di System.Diagnostics namespace.
Debug metode kelas tidak disertakan dalam versi Rilis program Anda, sehingga tidak meningkatkan ukuran atau mengurangi kecepatan kode rilis Anda.
C++ tidak mendukung Debug metode kelas. Anda dapat mencapai efek yang sama dengan menggunakan Trace kelas dengan kompilasi kondisional, seperti #ifdef DEBUG... #endif.
Metode Debug.Assert
Gunakan metode System.Diagnostics.Debug.Assert secara bebas untuk menguji kondisi yang harus bernilai benar jika kode Anda benar. Misalnya, Anda telah menulis fungsi pembagian bilangan bulat. Dengan aturan matematika, pembavisor tidak pernah bisa nol. Anda dapat menguji ini menggunakan pernyataan:
int IntegerDivide ( int dividend , int divisor )
{
Debug.Assert ( divisor != 0 );
return ( dividend / divisor );
}
Saat Anda menjalankan kode ini di bawah debugger, pernyataan pernyataan dievaluasi, tetapi dalam versi Rilis, perbandingan tidak dibuat, sehingga tidak ada overhead tambahan.
Berikut adalah contoh lain. Anda memiliki kelas yang menerapkan rekening giro, sebagai berikut:
float balance = savingsAccount.Balance;
Debug.Assert ( amount <= balance );
savingsAccount.Withdraw ( amount );
Sebelum menarik uang dari akun, Anda ingin memastikan bahwa saldo akun cukup untuk menutupi jumlah yang Anda siapkan untuk ditarik. Anda dapat menulis pernyataan untuk memeriksa saldo:
float balance = savingsAccount.Balance;
Trace.Assert ( amount <= balance );
savingsAccount.Withdraw ( amount );
Perhatikan bahwa panggilan ke metode System.Diagnostics.Debug.Assert akan menghilang saat Anda membuat versi rilis dari kode Anda. Itu berarti bahwa panggilan yang memeriksa saldo menghilang dalam versi Rilis. Untuk mengatasi masalah ini, Anda harus mengganti System.Diagnostics.Debug.Assert dengan System.Diagnostics.Trace.Assert, yang tidak hilang dalam versi Rilis:
Panggilan untuk System.Diagnostics.Trace.Assert menambahkan overhead ke versi Rilis Anda, tidak seperti panggilan ke System.Diagnostics.Debug.Assert.
Efek samping Debug.Assert
Saat Anda menggunakan System.Diagnostics.Debug.Assert, pastikan bahwa kode apa pun di dalamnya Assert tidak mengubah hasil program jika Assert dihapus. Jika tidak, Anda mungkin secara tidak sengaja memperkenalkan bug yang hanya muncul di versi Rilis program Anda. Berhati-hatilah dengan pernyataan yang berisi panggilan fungsi atau prosedur, seperti contoh berikut:
Penggunaan System.Diagnostics.Debug.Assert ini mungkin tampak aman pada pandangan pertama, tetapi misalkan fungsi meas memperbarui penghitung setiap kali dipanggil. Saat Anda membuat versi Rilis, panggilan ke meas ini dihilangkan, sehingga penghitung tidak diperbarui. Ini adalah contoh fungsi dengan efek samping. Menghilangkan panggilan ke fungsi yang memiliki efek samping dapat mengakibatkan bug yang hanya muncul di versi Rilis. Untuk menghindari masalah tersebut, jangan melakukan panggilan fungsi dalam System.Diagnostics.Debug.Assert pernyataan. Gunakan variabel sementara sebagai gantinya:
Bahkan ketika Anda menggunakan System.Diagnostics.Trace.Assert, Anda mungkin masih ingin menghindari penempatan panggilan fungsi di dalam pernyataan Assert . Panggilan tersebut harus aman, karena System.Diagnostics.Trace.Assert pernyataan tidak dihilangkan dalam build Rilis. Namun, jika Anda menghindari konstruksi seperti itu sebagai masalah kebiasaan, Anda cenderung tidak membuat kesalahan ketika Anda menggunakan System.Diagnostics.Debug.Assert.
Persyaratan Pelacakan dan Penyaringan Kesalahan
Jika Anda membuat proyek menggunakan wizard Visual Studio, simbol TRACE ditentukan secara default dalam konfigurasi Rilis dan Debug. Simbol DEBUG ditentukan secara default hanya di build Debug.
Jika tidak, agar Trace metode berfungsi, program Anda harus memiliki salah satu hal berikut di bagian atas file sumber:
#Const TRACE = Truedi Visual Basic#define TRACEdi Visual C# dan C++Atau program Anda harus dibangun dengan opsi TRACE:
/d:TRACE=Truedi Visual Basic/d:TRACEdi Visual C# dan C++Jika Anda perlu menggunakan metode Debug dalam build C# atau Visual Basic Release, Anda harus menentukan simbol DEBUG dalam konfigurasi Rilis Anda.
C++ tidak mendukung Debug metode kelas. Anda dapat mencapai efek yang sama dengan menggunakan Trace kelas dengan kompilasi kondisional, seperti
#ifdef DEBUG...#endif. Anda dapat menentukan simbol ini dalam kotak <dialog Halaman Properti Proyek>. Untuk informasi selengkapnya, lihat Mengubah Pengaturan Proyek untuk Konfigurasi Debug Visual Basic atau Mengubah Pengaturan Proyek untuk Konfigurasi Debug C atau C++.
Menegaskan pernyataan
System.Diagnostics.Trace.Assert dan System.Diagnostics.Debug.Assert menerima hingga tiga argumen. Argumen pertama, yang wajib, adalah kondisi yang ingin Anda periksa. Jika Anda memanggil System.Diagnostics.Trace.Assert(Boolean) atau System.Diagnostics.Debug.Assert(Boolean) hanya dengan satu argumen, Assert metode memeriksa kondisi dan, jika hasilnya salah, menghasilkan konten tumpukan panggilan ke jendela Output . Contoh berikut menunjukkan System.Diagnostics.Trace.Assert(Boolean) dan System.Diagnostics.Debug.Assert(Boolean):
Argumen kedua dan ketiga, jika ada, harus berupa string. Jika Anda memanggil System.Diagnostics.Trace.Assert atau System.Diagnostics.Debug.Assert dengan dua atau tiga argumen, argumen pertama adalah kondisi. Metode ini memeriksa kondisi dan, jika hasilnya salah, menghasilkan string kedua dan string ketiga. Contoh berikut menunjukkan System.Diagnostics.Debug.Assert(Boolean, String) dan System.Diagnostics.Trace.Assert(Boolean, String) digunakan dengan dua argumen:
Debug.Assert ( stacksize > 0, "Out of stack space" );
Trace.Assert ( stacksize > 0, "Out of stack space" );
Contoh berikut menunjukkan System.Diagnostics.Debug.Assert(Boolean, String, String) dan System.Diagnostics.Trace.Assert(Boolean, String, String) digunakan dengan tiga argumen:
Debug.Assert ( stacksize > 100, "Out of stack space" , "Failed in inctemp" );
Trace.Assert ( stacksize > 0, "Out of stack space", "Failed in inctemp" );
Menyesuaikan perilaku Assert
Jika Anda menjalankan aplikasi dalam mode antarmuka pengguna, Assert metode menampilkan kotak dialog Pernyataan Gagal saat kondisi gagal. Tindakan yang terjadi ketika pernyataan gagal dikontrol oleh Listeners properti atau Listeners .
Anda dapat menyesuaikan perilaku output dengan menambahkan TraceListener objek ke dalam Listeners koleksi, dengan menghapus TraceListener dari Listeners koleksi, atau dengan mengganti metode System.Diagnostics.TraceListener.Fail dari TraceListener yang ada untuk membuatnya berperilaku berbeda.
Misalnya, Anda dapat mengambil alih System.Diagnostics.TraceListener.Fail metode untuk menulis ke log peristiwa alih-alih menampilkan kotak dialog Pernyataan Gagal .
Untuk menyesuaikan output dengan cara ini, program Anda harus berisi pendengar, dan Anda harus mewarisi dan TraceListener mengambil alih metodenya System.Diagnostics.TraceListener.Fail .
Untuk informasi selengkapnya, lihat Melacak Listener.
Mengatur pernyataan dalam file konfigurasi
Anda dapat mengatur pernyataan dalam file konfigurasi program serta dalam kode Anda. Untuk informasi selengkapnya, lihat System.Diagnostics.Trace.Assert atau System.Diagnostics.Debug.Assert.