C# using
Sekat dan SqlConnection
Pelupusan: Pengecualian dan Pulangan
Pernyataan C# using
menguruskan sumber boleh guna secara elegan, menjamin pelepasan yang betul walaupun dalam menghadapi pengecualian atau pulangan awal. Mari kita periksa cara ini digunakan pada SqlConnection
objek.
Senario 1: Kembali dari using
Blok
Pertimbangkan coretan kod ini:
<code class="language-csharp">using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // Database operations return (byte[])command.ExecuteScalar(); }</code>
Pernyataan return
tidak menghalang blok using
daripada melaksanakan pembersihannya. Kaedah SqlConnection
Dispose()
dipanggil secara automatik apabila pendakap tutup blok }
dicapai, memastikan sambungan ditutup.
Senario 2: Pengecualian dalam using
Blok
Sekarang, mari lihat pengendalian pengecualian:
<code class="language-csharp">try { using (SqlConnection connection = new SqlConnection(connectionString)) { int employeeID = findEmployeeID(); connection.Open(); // Database operations command.ExecuteNonQuery(); } } catch (Exception ex) { /* Handle exception: log, rethrow, etc. */ }</code>
Walaupun pengecualian dilemparkan ke dalam blok try
, kaedah using
blok Dispose()
masih dijalankan. SqlConnection
ditutup dengan pasti, menghalang kebocoran sumber.
Struktur Kod Optimum
Walaupun blok using
mengendalikan pengurusan sumber secara berkesan, menyarangkan blok try-catch
di dalam blok using
meningkatkan kebolehbacaan dan kebolehselenggaraan kod:
<code class="language-csharp">using (SqlConnection connection = new SqlConnection(connectionString)) { int employeeID = findEmployeeID(); try { connection.Open(); // Database operations command.ExecuteNonQuery(); } catch (Exception ex) { /* Handle exception: log, rethrow, etc. */ } }</code>
Pendekatan ini dengan jelas memisahkan interaksi pangkalan data daripada pengendalian pengecualian, menjadikan kod lebih mudah difahami dan nyahpepijat. Blok using
tetap bertanggungjawab untuk penutupan sambungan tanpa mengira hasil try-catch
blok.
Atas ialah kandungan terperinci Bagaimanakah Blok `menggunakan` Mengendalikan Penutupan `SqlConnection` dalam C# Apabila Pengecualian atau Pengembalian Berlaku?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!