Thema Datum  Von Nutzer Rating
Antwort
28.03.2014 15:45:19 Desby
NotSolved
29.03.2014 23:03:29 Gast78114
NotSolved
Rot Wenn Fehler dann E-Mail (ohne Sprungmarke)
30.03.2014 13:38:13 Gast350
NotSolved

Ansicht des Beitrags:
Von:
Gast350
Datum:
30.03.2014 13:38:13
Views:
695
Rating: Antwort:
  Ja
Thema:
Wenn Fehler dann E-Mail (ohne Sprungmarke)

>> Ich habe schon öfter gehört, dass man Sprungmarken wie "On Error Goto .." wirklich vermeiden soll

Vermeiden heißt nicht zwingend, dass man sie nicht nutzen darf.

Es kommt auf das "Wie" an - "Wie setzt man Sprungmarken richtig ein".

 

Option Explicit

Public Sub Beispiel01()
  
  Randomize Timer 'Zufallszahlengenerator init.
  
  Dim t As Double
  Dim erg As Double
  
  t = Math.Round(Rnd()) 'liefert 0 oder 1
  
  On Error Resume Next
  'Berechnung ausführen
  '(bei t = 0 kommt es hier zum Laufzeitfehler 11 'Division durch Null')
  erg = 815 / t
  
  If CBool(Err.Number) Then
    Call MsgBox(Err.Description, vbCritical, "Laufzeitfehler " & Err.Number)
    Exit Sub
  End If
  
  'hier folgt weiterer "Krimskrams" (hier nur veranschaulicht)
  erg = erg * 1.25
  
  Call MsgBox("Berechnung erfolgreich ausgeführt.", vbInformation, "Fertig")
  
End Sub

Public Sub Beispiel02()
  
  Randomize Timer 'Zufallszahlengenerator init.
  
  On Error GoTo ErrHandler
  
  Dim t As Double
  Dim erg As Double
  
  t = Math.Round(Rnd()) 'liefert 0 oder 1
  
  'Berechnung ausführen
  '(bei t = 0 kommt es hier zum Laufzeitfehler 11 'Division durch Null')
  erg = 815 / t
  
  'hier folgt weiterer "Krimskrams" (hier nur veranschaulicht)
  erg = erg * 1.25
  
  Call MsgBox("Berechnung erfolgreich ausgeführt.", vbInformation, "Fertig")
  
Exit Sub
  
ErrHandler:
  Call MsgBox("ErrHandler: " & vbNewLine & Err.Description, vbCritical, "Laufzeitfehler " & Err.Number)
End Sub

Die obigen Beispiele zeigen den korrekten Umgang mit "On Error...".

 

Das wovon du gelesen hast bezieht sich ehern auf sogenannten "Spagetticode.

Option Explicit

'Code nur zur Veranschaulichung
'(dieser Programmierstil mit Goto ist 'verboten')
Sub Spagetticode()
  
  Randomize Timer 'Zufallszahlengenerator init.
  
  Dim erg As Double

Step01:
  erg = erg + (100 - 1) * Rnd() + 1 'erg := erg + "Zufallszahl im Bereich: 1 bis 100"
  DoEvents
  
Step03:
  If erg < 65.75 Then GoTo Step01
  erg = erg / 2
  
Step08:
  If erg > 55.25 Then GoTo Step03
  
  Call MsgBox("erg = " & Round(erg, 4), Title:="Fertig")
  
End Sub

Hier erkennt man nur schwer den Ablauf (und auch den Sinn) des Algorithmus. Unter anderem gilt es deshalb heute als verboten. Diese Sprunganweisungen rühren noch aus den Anfängen der Programmierung her (in Maschinen(nahe)sprachen auch heute noch aktuell). In inzwischen veralteten Sprachen war das die übliche Möglichkeit Code so zu organisieren, dass es halbwegs übersichtlich bleibt (Codeblöcke). Diese Möglichkeit damit zu arbeiten hat sich bis heute (Gründe seien mal dahingestellt) weiter in Programmiersprachen gehalten, jedoch bieten moderne Sprachen inzwischen weitaus bessere Lösungsmöglichkeiten an.

 

Grüße


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
28.03.2014 15:45:19 Desby
NotSolved
29.03.2014 23:03:29 Gast78114
NotSolved
Rot Wenn Fehler dann E-Mail (ohne Sprungmarke)
30.03.2014 13:38:13 Gast350
NotSolved