Я делаю некоторую работу над ASP 3.0 и не смог разобраться в этом. ASP корректно сломается (и вернет ошибку 500), если есть синтаксическая ошибка, но если я (намеренно) напишу неверный SQL-запрос, а затем выполню запрос, он просто выведет возвращенную ошибку SQL прямо в HTML, а не ломка. Это был бы код (просто переписал sql). Также обратите внимание, что это не является частью функции. Это прямо там, на странице кода.
set cn = server.createobject("ADODB.Connection")
cn.open sConn
sql= "select thiscolumndoesnotexist from table1 "
set rs01 = server.createobject("ADODB.Recordset")
rs01.Open sql, cn, 0
%>
Теперь я уверен, что «On Error Resume Next» не активна, потому что, если я сломаю страницу с синтаксисом ASP, она сразу же сломается. Поэтому я попытался сделать что-то вроде
On Error GoTo ErrorControl
code here..
ErrorControl:
Response.Status "500 You broke it"
Resume NExt
но затем, страница разрывается из-за On Error GoTo ErrorControl
, именно там, где начался ErrorControl. Как будто он не поддерживает именованный обработчик ошибок.
Я также попытался установить On Error Resume Next
, а затем var error = Server.GetLastError()
, однако оказалось, что ошибки не было. Мне кажется, я помню, что читал, что Server.GetLastError работал бы только в том случае, если клиенту не было отправлено никакого вывода (что в моем случае, поскольку выводится HTML, и к моменту возникновения ошибки половина документа уже была отправлена) .
Есть идеи? Любая помощь очень ценится. Спасибо.