Stefan Hubert: Laufzeitfehler abfangen?

Hallo,

Hat von Euch schon mal jemand das Problem gehabt, dass, um einen möglichen Fehler zu erkennen, er erst mal gemacht werden muss?

Ich möchte z.B. ...location.href eines anderen Fensters abfragen. Das führt zu einer Zugriffsverletzung (->Laufzeitfehler), wenn .....tja, ich weiß nicht so genau, ...im anderen Fenster ein Dokument einer anderen Domain steht. OK, dann will ich die ...location.href in diesem Fall eben nicht wissen. Nur wie bekomme vor der Zugriffsverletzung raus, ob es eine Zugriffsverletzung geben wird/würde.

if (...location)

z.B. hat bereits einen Laufzeitfehler "Zugriffsverletzung" zur Folge.

Hat irgendjemand Erfahrungen bei sowas oder ähnlichem gemacht? Wie seid Ihr mit soeinem Problem umgegangen?

Vielen Dank vorab, dass Ihr Euch das mal durchgelesen habt,

Stefan

  1. Hallo,

    ich hab' in der JScript Language Referenz Version 5 volgende Seite gefunden:
    http://msdn.microsoft.com/scripting/default.htm?/scripting/JScript/doc/jsstmtrycatch.htm
    Hab' es gleich mal ausprobiert, und mit meinem IE5 funktioniert das. So schön es auch geht, leider interpretiert der NS das nicht.... Ich könnte das wirklich gut gebrauchen.

    Wer mal spielen will, (mit IE5 geht's):
    http://users.ai-lab.fh-furtwangen.de/~hubert/tryEval.html

    Grüße,

    Stefan

  2. Hallo mal wieder :-)

    Schau mal den Ansatz bei <../../sfarchiv/2000_1/t11625.htm> an, das koennte sein, was Du suchst. Zwar hat es dort nicht funktioniert, aber ich glaube, das lag nur daran, dass der gute Mann in seinem Error handler nicht true zurueckgegeben hat. Auf http://developer.netscape.com/docs/manuals/js/client/jsref/handlers.htm#1120097 steht jedenfalls sowas.

    HTH, Calocybe

    1. Hallo mal wieder :-)

      Hallo,

      This Helps wunderbar! :-))... Mal sehen, ob ich noch was für den IE finde, bei dem geht das
      window.onerror = .....
      natürlich nicht ;-(

      Danke und Gruß,

      Stefan

      1. Hallo,
        fuer den IE gibt es dafuer was viel eleganteres da er JScript kann.

        Du brauchst nur den Script der den Fehler erzeugt in einen Try-Catch Bereich schreiben:

        try {
            Javascript blabla
            }
        catch(e) { }

        Damit werden alle Fehlermeldungen abgefangen. In der catch-Anweisung koennte man nun den Fehlercode und/oder Fehlertext abfragen (nur zur Info).

        schoene Gruesse
        Thomas Mell

        1. Hallo Thomas!

          Du entwickelst Dich langsam zu meinem ärgsten Widersacher, denn Du verbreitest die Unwahrheit!

          Die Sache mit dem Try und Catch gehört in keinster Weise zu JScript.
          JavaScript Version 1.5 kann das auch, es gehört auch zum ECMA Standard, von dem sich ja JavaScript (das Original) und JScript (die minderwertige Kopie :-)  ) neuerdings ableiten, und mein Liebling, der Navigator 6, wird das natürlich beherrschen.

          Von daher ist die Aussage:

          fuer den IE gibt es dafuer was viel eleganteres da er JScript kann.

          natürlich falsch, denn es geht mit dem Navi 6 dank JS 1.5 genauso, und damit genauso elegant, und Fehlerbehandlung in Script-Bereichen ist nicht länger ein Privileg des IE.

          (Mögest Du Deine IE-Propaganda nächstens auf ihre Richtigkeit evaluieren, bevor Du, wider das Gute demagogisch agierend, postest!  *g*)

          Grüße,

          Bio
          (Verteidiger des Glaubens, Kämpe von Netscape, Ritter der Schwafelrunde)

          1. Hi Bio,
            leg doch nicht immer jedes Wort auf die Goldwaage. Ich weiss, der NN6 ist das beste, schoenste, genialste, schnellste und ueberhaupt der einzig richtige Browser. Nur leider hat ihn kaum einer, wer weiss wann er mal rauskommt und wenn er ueberhaupt mal ernstzunehmende Marktanteile besitzt. Und bis dahin (sollte mal noch locker 1 Jahr dauern) muessen wir uns wohl an der NN4 Muellkiste (gemeiner Tritt gegen dein Schienbein *lol*)halten. Und der kann nun mal keine gescheite Fehlerbehandlung, der IE aber schon *baehhhh*. Ob er es mit JS, JScript oder VBScript macht ist dabei wohl Wurst, Hauptsache er kann es ueberhaupt.
            Im uebrigen habe ich keine IE-Propaganda gemacht, sondern nur darauf hingewiesen wie man es mit dem IE machen kann. Aber ich wuensche dir weiterhin viel Spass bei deiner NN-Propaganda *g*.

            gruesse
            Thomas

            PS: Ich habe doch wahrhaftig gegen meine Prinzipien verstossen und habe mir das Teil auf meinen Arbeitsrechner installiert. Nachdem die ersten 3 besuchten Seiten nicht richtig dargestellt wurden, und JS nicht funktioniert, habe ich das Teil gleich wieder runtergeworfen. Dann warte ich doch lieber auf die Finalversion. Ausserdem ist das Teil schnarchend langsam.

          2. Moin!

            JavaScript Version 1.5 kann das auch, es gehört auch zum ECMA Standard, von dem sich ja JavaScript (das Original) und JScript (die minderwertige Kopie :-)  ) neuerdings ableiten, und mein Liebling, der Navigator 6, wird das natürlich beherrschen.

            Also ich kenne nur ECMA Script 262, welches basierend auf JS 1.1 entwickelt wurde, zum Zeitpunkt des Erscheinens von JS 1.2 noch nicht fertig war und demzufolge erst JS 1.3 vollstaendig compliant dazu ist.

            try/catch gibt es bereits in JS 1.4, was nur leider noch kein Browser beherrscht. In ECMA 262 ist lediglich zu lesen, dass eine zukuenftige Version des Standards, der Ende 1999 erscheinen soll(te), dies auch beinhaltet. Finden kann ich einen solchen aber nicht, was jedoch auch an der Unuebersichtlichkeit von http://www.ecma.ch/ liegen koennte.

            Zu IE kann ich nur sagen, die sollen doch bitte erstmal JavaScript 1.2 unterstuetzen (oder kann das der 5er nun endlich?), bevor sie sich irgendwelche anderen Dinge ausdenken.

            So lange

            1. Sup!

              Try steht auf Seite 77 des ECMA262 Edition 3 Final Draft vom 13ten Oktober 1999

              Meine Version, die ich runtergeladen habe, unterscheidet sich allerdings von der folgenden in der Dateigröße:

              ftp://ftp.ecma.ch/ecma-st/Ecma-262.pdf

              (die im Prinzip die gleiche sein sollte)

              Bio

              1. Hi!

                Try steht auf Seite 77 des ECMA262 Edition 3 Final Draft vom 13ten Oktober 1999

                Oh, ich hab ja tatsaechlich die 2nd Edition. Haetten sie aber auch ne andere Nummer (als 262) vergeben koennen, damit man wenigstens merkt, dass es was neues gibt (wie bei den RFCs). Irgendwie regen mich diese ECMA-Specs sowieso auf. Es gibt sie nicht als HTML, die PDFD-Seiten sind voellig konfus numeriert, die Website ist voellig unuebersichtlich... naja.

                Meine Version, die ich runtergeladen habe, unterscheidet sich allerdings von der folgenden in der Dateigröße:
                ftp://ftp.ecma.ch/ecma-st/Ecma-262.pdf

                Die dort ist 656 kB gross, meine 2nd ist 571 kB.

                So lange