2016-12-21 2 views
1

Ich habe seit ein paar Tagen versucht zu erforschen, wie eine benutzerdefinierte Ausnahme in einem Versuch/fangen zu erstellen. HierJavascript Benutzerdefinierte Ausnahme

ist das, was ich versuche zu tun:

Ich habe eine enthalten JS-Datei in meiner HTML-Seite. Die JS-Datei definiert ein benutzerdefiniertes Objekt und definiert Methoden für das Objekt.

Als nächstes wird in der HTML-Seite, die ich tue folgendes:

try { 
    MyObj = new CustomObj;  //from the included JS file. 
    MyObj.CustomMethod();  //also from the included JS file. 
} catch(e) { 
    alert("Error in either the create of the object, or the method. Error is " + e.description) 
} 

Ich muss in der Lage sein, innerhalb der Code für die CustomMethod() die Fehlerobjekteigenschaften festlegen, die in der Fang erfasst werden Erklärung. Zum Beispiel:

CustomMethod = function{ 
    try{ 
     document.getelementById("field1").value = "my value"; 
    } catch(err) { 
     //Set the return error 
     ReturnErr.description = "There was an error!"; 
    } 
    }; 

Kann dies getan werden? Von dem, was ich versucht habe, habe ich die throw-Anweisung verwendet, aber es wirkt sich nicht auf das Error-Objekt aus, daher wird der catch-Abschnitt nie ausgelöst. Im Gesicht wird die benutzerdefinierte Nachricht nur in der Konsole angezeigt.

Vielen Dank für die Zeit.

+0

Mögliche Duplikat [Wie erstelle ich einen benutzerdefinierten Fehler in JavaScript?] (Http://stackoverflow.com/questions/783818/how-do-i-create-a-custom-error-in-javasc ript) –

Antwort

1

Versuchen:

function MyException(_message, _data) { 
    this.message = _message; 
    this.data = _data; 
    this.name = "MyException"; 
} 

Nutzungs

try{ 
     //...     
    } 
    catch(_error){ 
     throw new MyException(message, _error); 
    } 

es Ihnen Hoffnung wird helfen, die Dinge zu sortieren,

+0

Danke. Aber ich denke, dass ich den (_error) in Ihrem Beispiel nicht ändern kann? –

+0

@EricMeans, sorry, Tippfehler, pass Fehler als zweiter Parameter. –

+0

Entschuldigung, was ich meinte war, nicht den throw im catch-Block verwenden zu müssen, sondern den Fehler, den der catch-Block bekommt, in der aufgerufenen Funktion/Methode aus dem try-Block zu setzen. Macht das irgendeinen Sinn? –

Verwandte Themen