2017-05-27 4 views
2

Ich habe eine Seite, die ein klassisches ASP/VB-Skript mit der jQuery Ajax-Funktion aufruft, mit der Handler für Erfolgs- und Fehlerergebnisse angegeben werden können. Diese Handler erhalten die Antwort vom ASP-Skript zurück, das gerade etwas SQL-Code ausführt, um einen Datensatz in eine Datenbank einzufügen. Wenn es einen SQL-Fehler gibt, der auf eine doppelte Schlüsselverletzung hinweist, möchte ich die generierte Fehlermeldung durch eine freundliche ersetzen, indem ich den folgenden Code benutze. Wie ich festgestellt habe, funktioniert das nicht, weil der Code niemals die Zeile "if conn.Errors.Count" erreicht. Wenn SQL einen Fehler generiert, wird der Code sofort mit der Fehlermeldung zurückgegeben, die die Zeilennummer der Zeile "conn.Execute" enthält. Gibt es eine Möglichkeit, dies zu tun, was ich will?Umgang mit VBScript-Fehlern beim Aufrufen von Skripten mit Ajax

+1

Siehe auch: [Fehlerbehandlung in ASP] (http://www.4guysfromrolla.com/webtech/060399-1.shtml) – SearchAndResQ

+0

Mögliche Duplikat [mit „auf Fehler weiter "im klassischen ASP, und wie man mit Fehlern umgehen kann" (https://stackoverflow.com/questions/17445890/using-on-error-resume-next-in-classic-asp-and-how-to-handle- Fehler) –

+0

Hallo - so klassische ASP funktioniert auf der Grundlage, dass, wenn Sie nicht anders angeben, ist jeder Fehler unerwartet und es wird beendet, wenn es einen sieht. In Ihrem Fall verursacht das SQL einen Fehler - daher der Quit. Vielleicht haben Sie schon einmal von "try-catch" gehört, um über die Fehlerbehandlung zu sprechen. Klassisches ASP hat kein try-catch, stattdessen hat es einen Fehler resume next usw. Verwenden Sie die Links, die die anderen bereitgestellt haben. –

Antwort

0

wie andere darauf hingewiesen haben, ist die beste Lösung, "bei Fehler fortsetzen nächsten" zu verwenden. so würde der Code in etwa so aussehen:

on error resume next 
set conn=CreateObject("ADODB.Connection") 
conn.Open ConnString 
conn.Execute "INSERT ... " (long statement omitted for readability) 
if Err.Number > 0 then 
    if instr(Err.Description, "duplicate key") > 0 then 
     Response.Write "Unable to add herb - code already exists" 
    else 
     Response.Write conn.Errors(0).Description 
    end if 
else ' success 
    Response.Write "Herb added" 
end if 
conn.Close 
set conn=nothing 
on error goto 0 '-- this will remove error handling for the rest of the page and can be considered optional in this case 
Verwandte Themen