German Nach Fehler einfach fortfahren

Discussion in 'German Forum' started by so27, Jun 15, 2015.

  1. so27

    so27 Active Member Licensed User

    Hallo zusammen,

    ich habe ein mittelschweres Problem beim Einlesen von Apps. Meine App liest alle Apps bis zur 78. App ein und steigt dann mit einem Fehler aus. (Warum auch immer)

    Am PC gibt es da einen tollen Befehl der da lautet: on error resume next (also, wenn ein Fehler auftritt gehe einfach weiter).

    Gibt es bei B4A auch diese Möglichkeit, dass der Fehler einfach umgangen bzw. ignoriert wird?

    Gruß, so27
     
  2. MaFu

    MaFu Well-Known Member Licensed User

    Du kannst versuchen den Fehler mit einem Try ... Catch Block abzufangen.
    Code:
    Try
        
    'dein Code hier
    Catch
        
    'ToastMessageShow(LastException.Message, True)
        Log(LastException)
    End Try
     
  3. DonManfred

    DonManfred Expert Licensed User

    Viel eher sollte man versuchen rauszufinden was da genau schief läuft... z.b. versuchst du da vielleicht ein icon zu laden was gar nicht existiert (hatte ich schon den Fall).
     
    KMatle likes this.
  4. hogiebaer

    hogiebaer Active Member Licensed User

    Don hat recht.

    Esgibt für Dich 2 Möglichkeiten. Da Du ja schon weisst, dass das Ding abschmiert, starte im Debug Mode und du wirst exakt an der Absturzstelle sehen, was schief läuft.
    Alternativ kannst (solltest!) Du auch im ReleaseMode mit MaFu´s Methode arbeiten. Aus deiner Fragestellung lese ich ein wenig heraus, dass Du aber nicht genau weisst,
    wo es schief läuft. Wenn du wenigstens weisst, in welcher SUB, dann bietet sich folgende Lösung an.

    Code:
    Sub DeineRoutine
    TRY

       .. Der Inhalt deiner jetzigen 
    Sub (ohne SubEnd)



    CATCH

        
    MsgBox(lastexception.message,"")

    END TRY

    End Sub
    Dann siehst Du auf jeden Fall schon einmal beim Crash die verwertbare Fehlermeldung.


    Diese Resume Next Geschichte kenne ich auch noch von früher, finde sie aber sehr gefährlich und bin froh, dass es sie hier nicht gibt, da man sehr
    schnell schlampig programmiert und auftretende Fehlermeldungen nicht mehr wahrnimmt. Das Programm lief dann früher weiter mit eventuell falschen
    Variablenbelegungen und die Kette der Fehler nimmt unproportional zu. So bist du einfach gezwungen, Fehler zu BEHEBEN, anstatt sie unter den
    Teppich zu kehren.

    Und eigentlich ist ja diese TRY/CATCH Methode eine Art Resume Next Methode.
    Wenn man genau weiss, dass an bestimmten Stellen z.b. I/O Probleme auftreten, die
    man nicht beachten muss, fängt man sie vor der Ausführung mit TRY ab und lässt den Catch Block einfach leer.


    Gruss
    Holger
     
  5. so27

    so27 Active Member Licensed User

    Guten Morgen zusammen,

    ja super über lastexception.message kann ich den Fehler genau analysieren. Danke.

    @DonManfred es ist in der Tat ein fehlendes Icon, welches den Fehler verursacht.

    LG, so27
     
    DonManfred likes this.
  6. so27

    so27 Active Member Licensed User

    Vielleicht kann mir hier mit der Fehlermeldung jemand helfen. Beim Einlesen der Apps bricht die App nun mit folgender Meldung ab. Wie kann ich den Fehler korrigieren?
     

    Attached Files:

  7. DonManfred

    DonManfred Expert Licensed User

    Gar nicht. B4A kennt keine Vektordrawables. Du kannst eigentlich nur mittels
    Code:
    GetType(obj)
    prüfen ob es ein Vektordrawable ist und wenn ja dann nimmst Du ein Ersatzicon.
     
  8. so27

    so27 Active Member Licensed User

Loading...