ASP настолько прост, что многие разработчики не задумываются об обработке ошибок. Обработка ошибок может сделать ваше приложение более логичным. Я видел множество коммерческих веб-сайтов, написанных на ASP, и большинство из них игнорируют обработку ошибок. Неправильный тип.
Существует три основных типа ошибок:
1. Ошибка компиляции:
Ошибка такого рода обычно возникает из-за проблем с синтаксисом в коде. ASP перестал работать из-за ошибки компиляции.
2. Ошибка запуска:
Эта ошибка возникает при подготовке к запуску ASP. Например: если вы пытаетесь присвоить значение переменной, но оно находится за пределами допустимого диапазона переменной.
3. Логическая ошибка:
Логические ошибки обнаружить труднее всего. Эта ошибка часто является структурной ошибкой, которую компьютеры не могут обнаружить. Это требует от нас проверки нашего кода сверху вниз.
Поскольку ошибки компиляции обычно возникают вместе с логическими ошибками и обычно могут отображаться, поэтому нас беспокоят только ошибки выполнения. Все это приводит к прекращению работы ASP и оставляет пользователю кучу очень недружелюбного текста. Так как же нам бороться с ошибками времени выполнения?
Тип ошибки:
ADODB.Поле (0x800A0BCD)
Либо BOF, либо EOF имеет значение TRUE, либо текущая запись была удалена, и для требуемой операции требуется текущая запись.
Причина: Когда вы использовали SQL для поиска записей в базе данных, результат поиска был пустым, и вы не обработали ситуацию с пустыми записями.
Решение: 1. Если вы не считаете, что результат поиска пуст, то вам следует подумать, верен ли ваш оператор SQL. 2. Если он действительно пуст, то вам следует добавить «if rs.eof then» или «do while»; not rs.eof "Утверждения типа " используются для обработки ситуации eof.
Тип ошибки:
(0×80020009)
Произошел несчастный случай.
Причина. При использовании SQL для поиска записей базы данных результат поиска был пустым, и в последующем коде вы вызывали такие записи, как rs("aa").
Решение: либо то же самое, что описано выше, плюс оценка и обработка rs.eof, либо ваш оператор SQL неверен, в результате чего запись не найдена, и запись rs("aa") не может быть использована позже.
Тип ошибки:
Активные страницы сервера, ASP 0126 (0×80004005)
Включенный файл «xxx.asp» не найден.
Причина: Как указано в сообщении об ошибке, этот включаемый файл не существует.
Решение: Если вы уверены, что этот файл существует, значит ваш путь написан неправильно. Например, его путь относительно корневого каталога сайта должен быть inc/xxx.asp, тогда в include следует прописать inc/xxx.asp. и не только xxx.asp. Вложение: Способ записи include:
Тип ошибки:
Поставщик Microsoft OLE DB для драйверов ODBC (0×80004005)
[Microsoft][ODBC Microsoft Access Driver] Для операции необходимо использовать обновляемый запрос.
Причина. Это очень часто встречается на серверах XP и является проблемой конфигурации сервера или проблемой прав пользователя.
Решение: Если ошибка возникает только при отладке на этом компьютере, щелкните правой кнопкой мыши папку, в которой находится веб-сайт, нажмите «Общий доступ и безопасность...», нажмите «Добавить...» в «Безопасность», напишите «Все», а затем включите это. Права пользователя все, то есть все кроме первого проверяются. После подтверждения обновите и можно будет пользоваться. (Примечание. Если вы не можете найти параметр «Безопасность», нажмите «Инструменты» в любой папке, затем «Свойства папки» — «Просмотр» и снимите флажок «Использовать простой общий доступ к файлам». Можно.)
Тип ошибки:
Ошибка компилятора Microsoft VBScript (0x800A0401)
Выступление не закончилось
Причина: Синтаксическая ошибка.
Решение: Проверьте строки, подсказанные системой. Если приглашение оказывается последней строкой этой страницы, весьма вероятно, что оператор if забыл написать «end if», а оператор select забыл написать «end select». Короче говоря, конца там, где есть конец, нет. необходим, из-за чего сервер не может его найти. В конце оператора ошибка должна отображаться в последней строке.
Тип ошибки:
Ядро базы данных Microsoft JET (0x80040E10)
По крайней мере для одного параметра не указано значение.
Причина: При написании операторов SQL мы часто вызываем некоторые параметры, и возможно, что одному из этих параметров не присвоено значение.
Решение: Проверьте, действительно ли передается значение каждого параметра. Весьма вероятно, что некоторые параметры на самом деле являются "". Конечно, индексировать базу данных с такими параметрами невозможно.
Тип ошибки:
Ядро базы данных Microsoft JET (0x80040E37)
Ядро базы данных Microsoft Jet не может найти входную таблицу или запросить «AA». Определите, существует ли он и правильно ли написано его название.
Причина: Эта таблица не существует.
Решение: Возможно, вы написали неправильное имя таблицы или подключились не к той базе данных? Проверьте еще раз внимательно!
Тип ошибки:
Ошибка выполнения Microsoft VBScript (0x800A000D)
Несоответствие типа: /'[строка: ""]/"
Причина. Это потому, что тип вашей переменной — строковый, но вы используете ее как число или другой тип.
Решение. Например, если вам нужна числовая переменная для вычисления математических операций, таких как i=i+1, вам следует использовать для этой переменной cint (имя переменной), чтобы принудительно преобразовать ее в числовой тип. Также необходимо выполнить сравнение между двумя переменными. того же типа, поэтому его также необходимо преобразовать, метод тот же, что и выше.
Тип ошибки:
Ядро базы данных Microsoft JET (0x80040E07)
Несоответствие типов данных в стандартном выражении.
Причина: Как правило, при написании операторов SQL возникает ошибка, то есть путаются числовые и строковые переменные.
Решение. Это легко сделать. Попробуйте удалить одинарные кавычки из переменных SQL, к которым добавлено "" или добавить "" к переменным, которые изначально считались числами, а затем проверьте результат.
Тип ошибки:
Ошибка запуска Microsoft VBScript (0x800A01A8)
Пропал объект:"
Причина: Весьма вероятно, что вы не определили объект rs.
Решение: не забудьте написать set rs=server.CreateObject("adodb.recordset"), чтобы можно было определить объект, или не используйте этот метод записи напрямую, гораздо удобнее будет использовать conn; выполнить("SQL") напрямую, и нет необходимости учитывать проблемы с объектами.
Тип ошибки:
Ошибка выполнения Microsoft VBScript (0x800A005E)
Недопустимое использование Null: «Заменить»
Причина: Распространено неправильное использование функций, включая Split и т. д. Причина относительно проста: содержимое вашей замены пусто.
Решение. Лучше всего добавить IF, чтобы проверить, пуст ли контент, который вы хотите заменить.
Ошибка компилятора Microsoft VBScript «800a03f6»
Драйвер ODBC не поддерживает необходимое свойство.
Причина. Возможно, это связано с тем, что в операторе sql не указано имя поля. Обычно имя поля или ключевое слово sql написано неправильно. Также возможно, что таблица, открываемая SQL, была открыта эксклюзивно.
Решение. Проверьте каждое имя поля и каждое ключевое слово, которое появляется в операторе sql.
Поставщик Microsoft OLE DB для драйверов ODBC, ошибка «80004005»
Пользователь «Администратор» на компьютере «HDZC-3JQSKBWO02» имеет исключительную блокировку таблицы данных «order_detail».
Причина: таблица, требуемая sql, открывается в форме дизайна таблицы при доступе.
Решение: отключить дизайн таблицы.
Ошибка компилятора Microsoft VBScript «800a03f6»
В коллекции не найден элемент, соответствующий требуемому имени или порядковому номеру.
Причина. В операторе sql не указано имя поля. Обычно это ошибка при написании имени поля или ключевого слова sql.
Решение. Проверьте каждое имя поля, которое появляется в операторе sql.
Ошибка ADODB.Recordset '800a0e78'
Никакие операции не допускаются, пока объект закрыт.
Причина: rs.close использовался перед оператором rs.open sql,conn,3,3 для закрытия объекта rs.
Решение: удалите предыдущий файл rs.close.
Ошибка поставщика Microsoft OLE DB для драйверов ODBC «80040e14»
[Microsoft][ODBC Microsoft Access Driver] Синтаксическая ошибка (отсутствует оператор) в выражении запроса 'oid form classtree, где oid = 25'.
Причина: в операторе sql имеется неправильно написанное английское ключевое слово или ошибка подпункта.
Решение: Введите оператор sql, а затем сравните его слово за словом, чтобы обнаружить ошибки записи.
Для операции требуется обновляемый запрос
Ответ: Проверьте, доступен ли файл библиотеки только для чтения.
Ответ 2. Отсортированный (упорядоченный) набор записей (rs) не допускает операций обновления (rs.update).
3219 Операция с этим контентом запрещена.
Ответ 3. Установлены ли в свойствах поля базы данных разрешение на вставку нулевых значений.
adErrInvalidArgument 3001
0x800A0BB9
Приложение использует параметр неправильного типа, находится за пределами допустимого диапазона или конфликтует с другими параметрами.
adErrNoCurrentRecord 3021
0x800A0BCD
BOF или EOF имеет значение True, или текущая запись удалена. Для операции, запрошенной приложением, требуется текущая запись.
adErrIllegalОперация 3219
0x800A0C93
Операция, запрошенная приложением, не разрешена в этом контексте.
adErrInTransaction 3246
0x800A0CAE
Приложение не может явно закрыть объект Connection во время транзакции.
adErrFeatureNotAvailable 3251
0x800A0CB3
Поставщик не поддерживает операцию, запрошенную приложением.
adErrItemNotFound 3265
0x800A0CC1
ADO не может найти в коллекции объект, соответствующий имени или ссылке на последовательность, запрошенную приложением.
adErrObjectInCollection 3367
0x800A0D27
Невозможно добавить, объект уже находится в коллекции.
adErrObjectNotSet 3420 0x800A0D5C Объект, на который ссылается приложение, больше не указывает на действительный объект.
adErrDataConversion 3421
0x800A0D5D
Приложение использовало тип значения, который не подходит для текущей операции.
adErrObjectClosed 3704
0x800A0E78
Если объект закрыт, операция, запрошенная приложением, не разрешена.
adErrObjectOpen 3705
0x800A0E79
Если объект открыт, операция, запрошенная приложением, не разрешена.
adErrProviderNotFound 3706
0x800A0E7A
ADO не может найти указанного поставщика.
adErrBoundToCommand 3707
0x800A0E7B
Приложение не может использовать объект Command для изменения свойства ActiveConnection объекта Recordset на его исходные данные.
adErrInvalidParamInfo 3708
0x800A0E7C
Приложение неправильно определяет объект параметра.
adErrInvalidConnection 3709
0x800A0E7D
Приложение запрашивает операцию над объектом, ссылаясь на закрытый или недопустимый объект Connection.
Ошибка ADODB.Field «80020009». Либо BOF, либо EOF имеет значение «истина», либо текущая запись была удалена, и для требуемой операции требуется текущая запись.
Решение следующее: эта ошибка вызвана отсутствием записей SELECT и DELETE или отсутствием записей в библиотеке, поэтому проверьте оператор SQL, чтобы убедиться, что условия для SELECT и DELETE верны. Также лучше всего это сделать. ВЫБЕРИТЕ запись или используйте значение «Вкл.» перед УДАЛИТЬ. Возобновить ошибку. Далее…….При ошибке Перейти к 0 для обработки. Если это связано с тем, что в библиотеке нет записи, просто добавьте решение If objRecordSet.Eof и objRecordSet.Bof. Тогда потому, что при открытии RecordSet указатель по умолчанию указывает на конец, поэтому вы можете просто использовать If objRecordSet. Эоф Тогда судить.
ActiveServerPages,ASP0126(0×80004005) –> включаемый файл не найден
MicrosoftOLEDBProviderforODBCDrivers(0x80040E21) –> ошибка оператора SQL (ошибка несоответствия типа данных или имени таблицы (имени поля), или таблица находится в состоянии редактирования, или таблица не существует в базе данных, открытой с помощью conn)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E14) –> ошибка оператора SQL (ошибка имени поля или несоответствие типа данных)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E07)–> ошибка оператора sql (тип поля, которое нужно вставить или обновить, не соответствует типу данных переменной)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E57)–> ошибка оператора sql (данные для вставки или обновления переполняются)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E10) –> ошибка оператора SQL (неверное имя поля обновления или тип обновляемых данных)
MicrosoftOLEDBProviderforODBCDrivers(0×80004005)–> ошибка оператора sql (значение поля, которое нужно вставить или обновить, не может быть нулевым)
MicrosoftOLEDBProviderforODBCDrivers(0×80004005) –> Ошибка открытия базы данных, в указанном каталоге база данных не найдена.
MicrosoftOLEDBProviderforODBCDrivers(0x80040E37)–>Таблица не найдена
Ошибка выполнения MicrosoftVBscript (0x800A000D) –> Ошибка ссылки на переменную rs (объект rs закрыт или не определен)
Ошибка выполнения MicrosoftVBscript (0x800A01C2) –> ошибка сценария vbscript (ошибка оператора vbscript)
Ошибка выполнения MicrosoftVBscript (0x800A0006)–> ошибка сценария vbscript (ошибка переполнения)
Ошибка компилятора MicrosoftVBscript (0x800A040E) –> отсутствует цикл
Ошибка компилятора MicrosoftVBscript (0x800A03EA) –> отсутствует if или endif
Ошибка компилятора MicrosoftVBscript (0x800A03EE) –> Оператор не завершен (отсутствует ")")
Ошибка компилятора MicrosoftVBscript (0x800A03F6) –> ошибка оператора if (отсутствует endif)
Ошибка выполнения MicrosoftVBscript (0x800A005B) — набор отсутствует.
Ошибка выполнения MicrosoftVBscript (0x800A0005) –> Переменная не определена
Ошибка компилятора MicrosoftVBscript (0x800A03F9) –> если оператор отсутствует, то
Ошибка компилятора MicrosoftVBscript (0x800A0411) –> ошибка определения оператора dim
ADODB.Recordset(0x800A0BB9)–>Ошибка оператора SQL (оператор SQL или оператор conn не определен или возникает ошибка при присвоении значения атрибуту rs)
ADODB.Recordset(0x800A0CC1) –> ошибка объекта rs (сам объект rs не существует или неправильно ссылается на несуществующее имя поля)
ADODB.Recordset(0x800A0BCD)–>ошибка объекта rs (в наборе записей нет записи, но набор записей работает)
ADODB.Recordset(0x800A0E78) –> ошибка объекта rs (набор записей не существует, оператор rs.open отсутствует)
ADODB.Recordset(0x800A0CC1) -> ошибка объекта rs (ссылка на несуществующее имя поля)
ADODB.Recordset(0x800A0E7D) –> ошибка определения соединения
ADODB.Recordset(0x800A0CB3)–>База данных открыта в режиме только для чтения, и данные не могут быть обновлены.