Czy obsługa błędów typu try-catch jest możliwa w ASP Classic?

Jakie są opcje w ASP Classic do obsługi błędów?

Na przykład:

Używam funkcji Mail.SendMail, ale po włączeniu serwera testowego nie działa, co jest normalne. Chcę sprawdzić, czy mailing jest możliwy, jeśli nie, to kontynuuj i / lub Pokaż wiadomość.

Jakieś pomysły?
Author: casperOne, 2009-01-23

8 answers

Istnieją dwa podejścia, można kodować w JScript lub VBScript, które mają konstrukcję lub można go fudge w kodzie.

Używając języka JScript można użyć następującego typu konstrukcji:

<script language="jscript" runat="server">
try {
      tryStatements}
catch(exception){
      catchStatements}
finally {
      finallyStatements}
</script>

W kodzie ASP możesz go użyć przy błędzie wznowić dalej w momencie, gdy będziesz miał próbę sprawdzenia błędu.Liczba w punkcie połowu jak:

<%
Dim i
' Turn on error Handling
On Error Resume Next


'Code here that you want to catch errors from

' Error Handler
If Err.Number <> 0 Then
   ' Error Occurred / Trap it
   On Error Goto 0 ' But don't let other errors hide!
   ' Code to cope with the error here
End If
On Error Goto 0 ' Reset error handling.

%>
 46
Author: Wolfwyrd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-17 11:42:24

Odnośnie Anwer Wolfwyrd: "On Error Resume Next" w rzeczywistości wyłącza obsługę błędów! Nie. W przypadku błędu Goto 0 włącza obsługę błędów z powrotem, ponieważ przynajmniej chcemy, aby maszyna złapała go, jeśli nie zapisaliśmy go sami. Off = zostaw to tobie.

Jeśli używasz przy następnym wznowieniu błędu, musisz uważać na to, ile kodu dołączasz po nim: pamiętaj, fraza " if Err.Liczba 0 wtedy " odnosi się tylko do najbardziej poprzedniego wywołanego błędu.

Jeśli twój blok kodu po "On Error Resume Next" ma kilka miejsc, w których można rozsądnie oczekiwać, że się nie powiedzie, następnie należy umieścić "If Err.Liczba 0 " po każdej z tych możliwych linii awarii, aby sprawdzić wykonanie.

W przeciwnym razie po "on error resume next" oznacza dokładnie to , co mówi-Twój kod może zawieść na dowolnej liczbie linii, a wykonanie będzie kontynuowane wesoło. Dlatego to wrzód na tyłku.

 9
Author: Phil Edwards,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-04 18:51:39

Dość ładny sposób na poradzenie sobie z tym dla brakujących klas COM:

Dim o:Set o = Nothing
On Error Resume Next
Set o = CreateObject("foo.bar")
On Error Goto 0
If o Is Nothing Then
  Response.Write "Oups, foo.bar isn't installed on this server!"
Else
  Response.Write "Foo bar found, yay."
End If
 7
Author: svinto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-09 00:21:56

1) dodaj On Error Resume Next na górze strony

2) Dodaj następujący kod na dole strony

If Err.Number <> 0 Then

  Response.Write (Err.Description)   

  Response.End 

End If

On Error GoTo 0
 7
Author: user2289611,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-21 19:28:23

Dla każdego, kto pracował zarówno w ASP, jak i bardziej nowoczesnych językach, pytanie wywoła chichot. Z mojego doświadczenia wynika, że używanie niestandardowej obsługi błędów (skonfigurowanej w IIS do obsługi błędów 500;100) jest najlepszą opcją do obsługi błędów ASP. W tym artykule opisano podejście, a nawet podano przykładową definicję kodu / tabeli bazy danych.

Http://www.15seconds.com/issue/020821.htm

 4
Author: Josh Warner-Burke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-25 14:30:20

Instrukcja On Error Resume Next powinna być umieszczona na tym, co chcemy zweryfikować.

  On Error Resume Next
  'Your code logic is here

Następnie zakończ wypowiedzeniem w stylu:

  If Err.Number <> 0 then

  'Your error message goes here'

  End if
 4
Author: mrjurin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-26 10:49:13

Dawno nie byłem w ASP land, ale iirc jest kilka sposobów:

try catch finally można racjonalnie symulować w VBS (dobry artykuł proszę. tutaj) i jest wydarzenie o nazwie class_terminate, które możesz oglądać i łapać wyjątki na całym świecie. Istnieje możliwość zmiany języka skryptowego...

 2
Author: annakata,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-10 09:35:28

Niektóre scenariusze nie zawsze pozwalają programistom na zmianę języka skryptowego.

Zdecydowanie preferuję JavaScript (i używałem go w nowych projektach). Jednak utrzymanie starszych projektów jest nadal wymagane i konieczne. Niestety, są one napisane w języku VBScript.

Więc mimo, że to rozwiązanie nie oferuje prawdziwej funkcji "try/catch", to wynik jest taki sam, a to mi wystarczy, aby wykonać zadanie.

 1
Author: Peter Mortensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-02 14:43:29