ASP sangat sederhana sehingga banyak pengembang tidak memikirkan penanganan kesalahan. Penanganan kesalahan dapat membuat aplikasi Anda lebih logis. Saya telah melihat banyak situs komersial yang ditulis dalam ASP, dan kebanyakan dari mereka mengabaikan penanganan kesalahan. Jenis yang salah.
Ada tiga jenis kesalahan utama:
1. Kesalahan kompilasi:
Kesalahan semacam ini biasanya terjadi karena masalah sintaksis pada kode. ASP berhenti berjalan karena kesalahan kompilasi.
2. Jalankan kesalahan:
Kesalahan ini terjadi saat Anda bersiap menjalankan ASP. Misalnya: jika Anda mencoba menetapkan nilai ke suatu variabel, tetapi nilai tersebut berada di luar rentang variabel yang diperbolehkan.
3. Kesalahan logika:
Kesalahan logika adalah kesalahan yang paling sulit dideteksi. Kesalahan ini seringkali merupakan kesalahan struktural yang tidak dapat ditemukan oleh komputer. Ini mengharuskan kita untuk memeriksa kode kita dari atas ke bawah.
Karena kesalahan kompilasi umumnya terjadi bersamaan dengan kesalahan logika dan biasanya dapat ditampilkan, jadi kami hanya khawatir tentang kesalahan yang berjalan. Itu semua menghentikan jalannya ASP dan meninggalkan banyak teks yang sangat tidak ramah kepada pengguna. Jadi bagaimana kita mengatasi kesalahan runtime?
Jenis kesalahan:
ADODB.Bidang (0x800A0BCD)
Entah BOF atau EOF BENAR, atau catatan saat ini telah dihapus dan operasi yang diperlukan memerlukan catatan saat ini.
Alasan: Saat Anda menggunakan SQL untuk mencari catatan di database, hasil pencarian kosong, dan Anda tidak menangani situasi catatan kosong.
Solusi: 1. Jika Anda tidak yakin bahwa hasil pencariannya kosong, maka Anda harus mempertimbangkan apakah pernyataan SQL Anda benar; 2. Jika memang kosong, maka Anda harus menambahkan "if rs.eofthen" atau "do while bukan rs.eof "Pernyataan seperti " digunakan untuk menangani situasi eof.
Jenis kesalahan:
(0×80020009)
Sebuah kecelakaan terjadi.
Alasan: Saat menggunakan SQL untuk mencari catatan database, hasil pencarian kosong, dan Anda memanggil catatan seperti rs("aa") di kode berikutnya.
Solusi: Sama seperti di atas, ditambah penilaian dan pemrosesan rs.eof, atau pernyataan SQL Anda salah, mengakibatkan catatan tidak ditemukan, dan catatan rs("aa") tidak dapat digunakan nanti.
Jenis kesalahan:
Halaman Server Aktif, ASP 0126 (0×80004005)
File yang disertakan 'xxx.asp' tidak ditemukan.
Alasan: Seperti yang tertulis dalam pesan kesalahan, file yang disertakan ini tidak ada.
Solusi: Jika Anda yakin file ini ada, maka jalur Anda salah ditulis. Misalnya, jalurnya yang berhubungan dengan direktori root situs web harus inc/xxx.asp, maka inc/xxx.asp harus ditulis dalam include. , dan Bukan hanya xxx.asp. Lampiran: Cara penulisan include adalah:
Jenis kesalahan:
Penyedia Microsoft OLE DB untuk Driver ODBC (0×80004005)
[Microsoft] [ODBC Microsoft Access Driver] Operasi harus menggunakan kueri yang dapat diperbarui.
Alasan: Ini sangat umum terjadi pada server XP dan merupakan masalah konfigurasi server, atau masalah izin pengguna.
Solusi: Jika kesalahan hanya debug pada mesin ini, klik kanan folder tempat situs web berada, klik "Berbagi dan Keamanan...", klik Tambah... di "Keamanan", tulis semua orang, lalu aktifkan ini Izin pengguna semuanya, yaitu semua kecuali yang pertama dicentang. Setelah konfirmasi, segarkan dan dapat digunakan. (Catatan: Jika Anda tidak dapat menemukan opsi "Keamanan", klik "Alat" di folder mana pun, lalu "Opsi Folder" - "Lihat", dan hapus centang pada kolom "Gunakan Berbagi File Sederhana". Bisa)
Jenis kesalahan:
Kesalahan kompiler Microsoft VBScript (0x800A0401)
Pernyataan belum berakhir
Alasan: Kesalahan sintaksis.
Solusi: Periksa baris yang diminta oleh sistem. Jika prompt berada di baris terakhir halaman ini, kemungkinan besar pernyataan if lupa menulis "end if", dan pernyataan pilih lupa menulis "end select". Singkatnya, tidak ada akhir di mana akhir diperlukan, menyebabkan server tidak menemukannya. Di akhir pernyataan, kesalahan harus ditampilkan di baris terakhir.
Jenis kesalahan:
Mesin Basis Data Microsoft JET (0x80040E10)
Setidaknya satu parameter tidak memiliki nilai yang ditentukan.
Alasan: Saat menulis pernyataan SQL, kita sering memanggil beberapa parameter, dan ada kemungkinan salah satu parameter tersebut belum diberi nilai.
Solusi: Periksa apakah nilai setiap parameter benar-benar diteruskan. Sangat mungkin bahwa beberapa parameter sebenarnya adalah "". Tentu saja, tidak mungkin untuk mengindeks database dengan parameter tersebut.
Jenis kesalahan:
Mesin Basis Data Microsoft JET (0x80040E37)
Mesin database Microsoft Jet tidak dapat menemukan tabel input atau kueri 'AA'. Tentukan apakah nama tersebut ada dan apakah namanya dieja dengan benar.
Alasan: Tabel ini tidak ada.
Solusi: Mungkin Anda salah menulis nama tabel atau terhubung ke database yang salah? Periksa kembali dengan cermat!
Jenis kesalahan:
Kesalahan waktu proses Microsoft VBScript (0x800A000D)
Ketik ketidakcocokan: /'[string: ""]/"
Alasan: Itu karena tipe variabel Anda adalah string, tetapi Anda menggunakannya sebagai angka atau tipe lainnya.
Solusi: Misalnya, jika Anda memerlukan variabel numerik untuk menghitung operasi matematika seperti i=i+1, Anda harus menggunakan cint (nama variabel) pada variabel tersebut untuk memaksa konversi ke tipe numerik bertipe sama, jadi perlu dikonversi juga, caranya sama seperti di atas.
Jenis kesalahan:
Mesin Basis Data Microsoft JET (0x80040E07)
Tipe data tidak cocok dalam ekspresi standar.
Alasan: Umumnya terjadi kesalahan saat menulis pernyataan SQL, yaitu variabel numerik dan string bingung.
Solusi: Ini mudah dilakukan. Coba hapus tanda kutip tunggal dari variabel di SQL yang telah ditambahkan "", atau tambahkan "" ke variabel yang semula dianggap sebagai angka, lalu periksa efeknya.
Jenis kesalahan:
Kesalahan menjalankan Microsoft VBScript (0x800A01A8)
Benda yang hilang:"
Alasan: Kemungkinan besar Anda belum mendefinisikan objek rs.
Solusi: Jangan lupa menulis set rs=server.CreateObject("adodb.recordset"), agar Anda dapat mendefinisikan objeknya; atau jangan gunakan cara penulisan ini, gunakan saja conn.execute("SQL") , yang akan jauh lebih nyaman dan tidak perlu mempertimbangkan masalah objek.
Jenis kesalahan:
Kesalahan waktu proses Microsoft VBScript (0x800A005E)
Penggunaan tidak valid Null: 'Ganti'
Alasan: Penggunaan fungsi yang tidak valid adalah hal biasa, termasuk Split, dll. Alasannya relatif sederhana, karena konten Ganti Anda kosong.
Solusi: Sebaiknya tambahkan IF untuk memeriksa apakah konten yang ingin Anda ganti kosong.
Kesalahan Kompiler Microsoft VBScript '800a03f6'
Driver ODBC tidak mendukung properti yang diperlukan.
Alasan: Mungkin karena tidak ada nama field yang muncul di pernyataan sql, biasanya nama field atau kata kunci sql salah ditulis. Mungkin juga tabel yang akan dibuka oleh SQL telah dibuka secara eksklusif.
Solusi: Periksa setiap nama field dan setiap kata kunci yang muncul dalam pernyataan sql
Penyedia Microsoft OLE DB untuk Kesalahan Driver ODBC '80004005′
Pengguna 'Admin' pada mesin 'HDZC-3JQSKBWO02' memiliki kunci eksklusif pada tabel data 'order_detail'.
Alasan: Tabel yang dibutuhkan oleh sql dibuka dalam bentuk desain tabel dengan akses
Solusi: Matikan desain tabel
Kesalahan Kompiler Microsoft VBScript '800a03f6'
Item tersebut tidak ditemukan dalam koleksi yang sesuai dengan nama atau nomor urut yang diperlukan.
Alasan: Tidak ada nama field yang muncul pada pernyataan sql. Umumnya terjadi kesalahan dalam penulisan nama field atau kata kunci sql.
Solusi: Periksa setiap nama field yang muncul di pernyataan sql
ADODB.Kesalahan kumpulan rekaman '800a0e78′
Tidak ada operasi yang diperbolehkan saat objek ditutup.
Alasan: rs.close digunakan untuk menutup objek rs sebelum pernyataan rs.open sql,conn,3,3.
Solusi: Hapus rs.close sebelumnya
Penyedia Microsoft OLE DB untuk Kesalahan Driver ODBC '80040e14′
[Microsoft] [ODBC Microsoft Access Driver] Kesalahan sintaksis (operator hilang) dalam ekspresi kueri 'oid form classtree di mana oid = 25′.
Alasan: Ada kesalahan kata kunci atau subparagraf bahasa Inggris yang ditulis secara ilegal dalam pernyataan sql.
Solusi: Ketikkan pernyataan sql, lalu bandingkan kata demi kata untuk mengetahui kesalahan penulisannya.
Operasi ini memerlukan kueri yang dapat diperbarui
Jawaban: Periksa apakah file perpustakaan bersifat read-only.
Jawaban 2: Kumpulan catatan yang diurutkan (diurutkan berdasarkan) (rs) tidak mengizinkan operasi pembaruan (rs.update)
3219 Pengoperasian tidak diperbolehkan pada konten ini
Jawaban 3: Apakah properti bidang database diatur untuk mengizinkan penyisipan nilai nol.
adErrInvalidArgument 3001
0x800A0BB9
Aplikasi menggunakan parameter yang jenisnya salah, berada di luar rentang yang dapat diterima, atau bertentangan dengan parameter lain.
adErrNoCurrentRecord 3021
0x800A0BCD
BOF atau EOF Benar, atau catatan saat ini telah dihapus. Operasi yang diminta oleh aplikasi memerlukan catatan saat ini.
adErrIllegalOperasi 3219
0x800A0C93
Operasi yang diminta oleh aplikasi tidak diperbolehkan dalam konteks ini
iklanErrInTransaksi 3246
0x800A0CAE
Aplikasi tidak dapat secara eksplisit menutup objek Connection selama transaksi.
iklanErrFeatureNotAvailable 3251
0x800A0CB3
Penyedia tidak mendukung operasi yang diminta oleh aplikasi.
iklanErrItemNotFound 3265
0x800A0CC1
ADO tidak dapat menemukan objek dalam koleksi yang sesuai dengan nama atau referensi urutan yang diminta oleh aplikasi.
adErrObjectInCollection 3367
0x800A0D27
Tidak dapat menambahkan, objek sudah ada dalam koleksi.
adErrObjectNotSet 3420 0x800A0D5C Objek yang direferensikan oleh aplikasi tidak lagi menunjuk ke objek yang valid.
adErrDataConversion 3421
0x800A0D5D
Aplikasi telah menggunakan tipe nilai yang tidak sesuai untuk operasi saat ini.
adErrObjectClosed 3704
0x800A0E78
Jika objek ditutup, operasi yang diminta oleh aplikasi tidak diperbolehkan.
adErrObjectOpen 3705
0x800A0E79
Jika objek terbuka, operasi yang diminta oleh aplikasi tidak diperbolehkan.
iklanErrProviderNotFound 3706
0x800A0E7A
ADO tidak dapat menemukan penyedia yang ditentukan.
adErrBoundToCommand 3707
0x800A0E7B
Aplikasi tidak dapat menggunakan objek Command untuk mengubah properti ActiveConnection dari objek Recordset ke data sumbernya.
adErrInvalidParamInfo 3708
0x800A0E7C
Aplikasi salah mendefinisikan objek Parameter.
adErrInvalidConnection 3709
0x800A0E7D
Aplikasi meminta operasi pada suatu objek dengan mereferensikan objek Koneksi yang tertutup atau tidak valid.
ADODB.Field Error '80020009' Baik BOF atau EOF adalah 'benar', atau catatan saat ini telah dihapus dan operasi yang diperlukan memerlukan catatan saat ini.
Solusinya adalah sebagai berikut: Kesalahan ini disebabkan oleh fakta bahwa catatan SELECT dan DELETE tidak ada, atau tidak ada catatan di perpustakaan, jadi periksa pernyataan SQL dan apakah kondisi SELECT dan DELETE sudah benar juga sebaiknya PILIH rekaman atau gunakan Aktif sebelum DELETE. Error Resume Next…….On Error Goto 0 untuk ditangani. Jika karena tidak ada record di perpustakaan, tambahkan saja penilaian If objRecordSet.Eof Dan objRecordSet.Bof Then. Karena ketika RecordSet dibuka, penunjuk menunjuk ke akhir secara default, jadi Anda cukup menggunakan If objRecordSet. Eof Lalu untuk menilai.
ActiveServerPages,ASP0126(0×80004005)–>termasuk file tidak ditemukan
MicrosoftOLEDBProviderforODBCDrivers(0x80040E21)–>Kesalahan pernyataan SQL (ketidakcocokan tipe data atau kesalahan nama tabel (nama bidang) atau tabel dalam status pengeditan, atau tabel tidak ada dalam database yang dibuka oleh samb)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E14)–>Kesalahan pernyataan SQL (kesalahan nama bidang, atau ketidakcocokan tipe data)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E07)–>kesalahan pernyataan sql (tipe bidang yang akan dimasukkan atau diperbarui tidak cocok dengan tipe data variabel)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E57)–>kesalahan pernyataan sql (data yang akan dimasukkan atau diperbarui meluap)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E10)–>Kesalahan pernyataan SQL (perbarui nama bidang atau tipe data yang akan diperbarui salah)
MicrosoftOLEDBProviderforODBCDrivers(0×80004005)–>kesalahan pernyataan sql (nilai bidang yang akan dimasukkan atau diperbarui tidak boleh nol)
MicrosoftOLEDBProviderforODBCDrivers(0×80004005) ->Kesalahan saat membuka database, tidak ada database yang ditemukan di direktori yang ditentukan
MicrosoftOLEDBProviderforODBCDrivers(0x80040E37)–>Tabel tidak ditemukan
Kesalahan runtime MicrosoftVBscript (0x800A000D)–>Kesalahan mereferensikan variabel rs (objek rs ditutup atau tidak ditentukan)
Kesalahan runtime MicrosoftVBscript (0x800A01C2)–>kesalahan skrip vbscript (kesalahan pernyataan vbscript)
Kesalahan runtime MicrosoftVBscript (0x800A0006)–>kesalahan skrip vbscript (kesalahan meluap)
Kesalahan kompiler MicrosoftVBscript (0x800A040E)–>loop hilang
Kesalahan kompiler MicrosoftVBscript (0x800A03EA)–>hilang jika atau endif
Kesalahan kompiler MicrosoftVBscript (0x800A03EE)–>Pernyataan belum berakhir (tidak ada ")")
Kesalahan kompiler MicrosoftVBscript (0x800A03F6)–>kesalahan pernyataan if (endif tidak ada)
Kesalahan runtime MicrosoftVBscript (0x800A005B)–>set hilang
Kesalahan runtime MicrosoftVBscript (0x800A0005)–>Variabel tidak ditentukan
Kesalahan kompiler MicrosoftVBscript (0x800A03F9)–>jika pernyataan tidak ada maka
Kesalahan kompiler MicrosoftVBscript (0x800A0411)–>kesalahan definisi pernyataan redup
ADODB.Recordset(0x800A0BB9)–>Kesalahan pernyataan SQL (pernyataan SQL atau pernyataan samb tidak ditentukan atau terjadi kesalahan saat menetapkan nilai ke atribut rs)
ADODB.Recordset(0x800A0CC1)–>kesalahan objek rs (objek rs itu sendiri tidak ada atau salah mereferensikan nama bidang yang tidak ada)
ADODB.Recordset(0x800A0BCD)–>rs objek error (tidak ada catatan dalam kumpulan catatan tetapi kumpulan catatan dioperasikan)
ADODB.Recordset(0x800A0E78)–>kesalahan objek rs (kumpulan rekaman tidak ada, pernyataan rs.open tidak ada)
ADODB.Recordset(0x800A0CC1) -> kesalahan objek rs (merujuk pada nama bidang yang tidak ada)
ADODB.Recordset(0x800A0E7D)–>kesalahan definisi koneksi
ADODB.Recordset(0x800A0CB3)–>Database dibuka dalam mode read-only dan data tidak dapat diperbarui.