Ketika kami terbiasa dengan ASP, kami akan merasa sangat sederhana, sehingga banyak pengembang tidak akan memikirkan cara untuk mengatasi kesalahan. Sebagian besar situs web komersial yang ditulis dalam ASP mengabaikan kesalahan. Jadi mari kita pahami bagaimana menangani kesalahan ASP sekarang.
Pendahuluan singkat
ASP sangat sederhana sehingga banyak pengembang tidak memikirkan penanganan kesalahan. Penanganan kesalahan yang benar dapat membuat aplikasi Anda lebih masuk akal. Saya telah melihat banyak situs web komersial yang ditulis dalam ASP, yang sebagian besar mengabaikan penanganan kesalahan.
Ada tiga jenis kesalahan utama:
Kesalahan Kompilasi:
Kesalahan semacam ini terjadi secara umum karena masalah sintaks kode.
ASP berhenti berjalan karena kesalahan kompilasi.
Jalankan kesalahan
Kesalahan ini terjadi ketika Anda siap menjalankan ASP.
Misalnya: Jika Anda mencoba menetapkan nilai ke variabel, tetapi di luar ruang lingkup yang diizinkan oleh variabel.
Kesalahan logis
Kesalahan logis adalah yang paling sulit dideteksi. Kesalahan semacam ini sering kali merupakan kesalahan struktural yang tidak dapat ditemukan oleh komputer.
Ini mengharuskan kami untuk memeriksa kode kami secara menyeluruh.
Karena kesalahan kompilasi biasanya terjadi bersama dengan kesalahan logis dan umumnya dapat ditampilkan, yang kita khawatirkan adalah kesalahan operasi. Itu semua mengakhiri operasi ASP dan meninggalkan banyak teks yang sangat tidak ramah untuk pengguna.
Jadi bagaimana kita menangani kesalahan operasi! ? Pertama, mari kita lihat satu -satunya perintah kesalahan yang diberikan kepada kami oleh ASP - ON error resume berikutnya (saya ingin mengingatkan pemula bahwa hanya ada kesalahan resume pernyataan berikutnya di ASP, dan tidak ada pernyataan kesalahan resume goto). Jika Anda tidak menggunakan pernyataan resume kesalahan berikutnya, semua kesalahan operasi akan terjadi. Ini fatal, maka kode kesalahan akan "ditampilkan" kepada pengguna, dan program ASP juga akan berhenti.
Ini kode kesalahan:
Penyedia DB Microsoft OLE untuk kesalahan driver ODBC 80004005
[Microsoft] [ODBC Driver Manager] Nama sumber data tidak ditemukan dan tidak ada driver default yang ditentukan
/test.asp, baris 60
Ketika kami menggunakan pernyataan resume ON Error berikutnya di bagian atas program, semua kesalahan akan diabaikan dan program akan secara otomatis menjalankan pernyataan berikutnya. Dengan cara ini, program akan dieksekusi sepenuhnya, dan pengguna tidak akan melihat pesan kesalahan setelah kesalahan terjadi. Tetapi ada juga kerugian dengan cara ini, yaitu, jika program tidak mengeksekusi seperti yang Anda bayangkan, akan sulit bagi Anda untuk mencari tahu apa yang salah, jadi Anda harus berurusan dengan kesalahan jika diperlukan.
Penanganan kesalahan
Di ASP, cara terbaik untuk mengatasi kesalahan adalah dengan menempatkan kode di bagian bawah program untuk menangani kesalahan. Saya juga merekomendasikan menggunakan buffer di setiap program ASP. Dengan cara ini, jika terjadi kesalahan, halaman akan berhenti dan konten halaman akan dihapus, sehingga pengguna tidak akan melihat pesan kesalahan dan akan ada lebih sedikit keluhan tentang Anda! Inilah contohnya:
< %@ Language = "vbscript" %>
<% 'Mengatur buffer ke true
Response.buffer = true
'Mulai penanganan kesalahan
Pada kesalahan resume berikutnya
%>
<% 'Penanganan kesalahan
Jika err.number <> 0 lalu
'Hapus halamannya
Respons.clear
'Tampilkan pesan kesalahan kepada pengguna
%>
<Html>
<head>
<title> </title>
</head>
<Body bgcolor = "#c0c0c0">
<Font face = "Arial"> Terjadi kesalahan dalam pelaksanaan halaman ASP ini <br>
Harap laporkan informasi berikut ke meja dukungan <p>
<b> Objek kesalahan halaman </b> <br>
Nomor kesalahan: < %= err.number %> <br>
Pesan Kesalahan: < %= err.Description %> <br>
File kesalahan: < %= err.source %> <br>
Garis kesalahan: < %= err.line %> <br>
</font>
</body>
</html>
<%Berakhir jika%>
Seperti yang Anda lihat di atas, pertama -tama saya mengatur resume kesalahan berikutnya, sehingga kesalahan tidak akan mempengaruhi eksekusi program.
Penanganan dan database kesalahan
Eksekusi menambahkan database ke penanganan kesalahan sangat rumit. Jika kami memiliki program dengan banyak perintah untuk menambahkan catatan ke database, jika Insert/Update dijalankan di bagian bawah program, jika kesalahan kami terjadi sebelumnya, maka itu akan berakhir! Kami akan menambahkan pesan kesalahan ke database. Karena kami menggunakan resume kesalahan berikutnya, semua kesalahan diabaikan! Bahkan jika ada kesalahan sebelumnya, program masih akan menambahkan data ke database.
Untuk menghindari situasi ini, kita harus melakukan beberapa trik terlebih dahulu. Cara yang benar untuk menghadapinya adalah sebagai berikut:
Jika err.number = 0 dan objconnection.errors.count = 0 lalu
'Pernyataan itu hanya dapat dieksekusi di sini karena tidak ada kesalahan
Atur rStresult = dbdata.execute (txtsql)
Akhiri jika
Solusi yang lebih maju
Ketika kesalahan terjadi, Anda juga dapat menampilkan lebih banyak pesan kesalahan. Di bawah ini adalah contoh penanganan kesalahan database dan halaman. Dengan itu, kami dapat menemukan semua kesalahan dalam program kami sekaligus. (Karena saya pikir bahasa Inggris lebih sulit untuk berbicara di beberapa tempat, tidak ada terjemahan).
<%
Jika err.number <> 0 lalu
Respons.clear
Pilih case err.number
Kasus 8 'Tentukan nomor yang salah
'Memecahkan masalah kesalahan khusus di sini
Kesalahan Umum Kasus Lain
Jika isObject (objconnection) maka
Jika ObjConnection.Errors.Count> 0 lalu
%>
<b> Objek Koneksi Basis Data </b>
< % Untuk intloop = 0 ke objconnection.errors.count - 1 %>
Kesalahan No: < %= objconnection.errors (intloop) .number %> <br>
Deskripsi: < %= objconnection.Errors (intloop) .Description %> <br>
Sumber: < %= objconnection.Errors (intloop) .source %> <br>
Sqlstate: < %= objconnection.errors (intloop) .sqlstate %> <br>
NativeError: < %= objconnection.Errors (intloop) .nativeError %> <p>
<% Berikutnya
Akhiri jika
Akhiri jika
Jika err.number <> 0 lalu
%>
<b> Objek kesalahan halaman </b> <br>
Nomor kesalahan < %= err.number %> <br>
Deskripsi Kesalahan < %= err.Description %> <br>
Sumber < %= err.source %> <br>
Linenumber < %= err.line %> <p>
<% End if
Akhiri Pilih
Akhiri jika
%>
Contoh di atas memungkinkan kita untuk menangani banyak masalah yang terjadi dalam database, yang juga biasa digunakan dalam pemrograman harian kita! Kita juga harus melihat bahwa Pilih Pernyataan Kasus, yang memungkinkan kita menangani kesalahan tertentu.
Pengalihan dan penanganan kesalahan
Satu hal yang harus kita perhatikan adalah objek pengalihan yang sering kita gunakan. Jika objek pengalihan muncul di halaman, maka penanganan kesalahan akan kehilangan artinya. Jadi kita harus menghadapinya sebelum berbalik, sebagai berikut:
Jika err.number = 0 dan objconnection.errors.count = 0 lalu
Respons.clear
Response.redirect? Lt; url di sini>?
Akhiri jika
Membuat kodenya lebih rapi
Untuk membuat kode lebih rapi, pertama tempat file yang ditangani kesalahan dalam file contil. Dengan cara ini Anda dapat menggunakannya di file apa pun. Ini juga nyaman untuk dimodifikasi.
Tambahkan pernyataan resume ON error berikutnya di bagian atas program Anda (setelah deklarasi bahasa tentu saja).
Lakukan pemeriksaan kesalahan sebelum Anda menjalankan SQL.
Penanganan kesalahan juga diperlukan sebelum menggunakan pengalihan.
Memungkinkan Anda menangani kesalahan yang berisi file di bagian atas kode
Ini adalah akhir dari konten metode penanganan kesalahan ASP. Saya berharap konten artikel ini akan membantu untuk belajar atau bekerja semua orang.