2015-11-18 9 views
5

Ist es möglich, mehrere catch in J zu verwenden S(ES5 or ES6) wie ich weiter unten beschreiben (es ist nur Beispiel):Mehrere catch in Javascript

try { 
­­­­ // just an error 
    throw 1; 
} 
catch(e if e instanceof ReferenceError) { 
­­­­ // here i would like to manage errors which is 'undefined' type 
} 
catch(e if typeof e === "string") { 
    ­­­­// here i can manage all string exeptions 
} 
// and so on and so on 
catch(e) { 
    ­­­­// and finally here i can manage another exeptions 
} 
finally { 
­­­­ // and a simple finally block 
} 

Dies ist das gleiche wie wir in C# oder in einem Java haben.

Vielen Dank im Voraus!

+1

Ein Block zu fangen und dann die Art der Ausnahme überprüfen? – Icepickle

+0

@Icepickle yeap Sie haben Recht –

Antwort

4

Nein. Das gibt es nicht in JavaScript oder EcmaScript.

Sie können dasselbe mit einer if[...else if]...else innerhalb der catch erreichen.

Es gibt einige nicht standardmäßige Implementierungen (und keine Standardspur), die do have it according to MDN.

+0

Ich sehe, nur mit der einen _catch_ Block und dann kann ich die Ausnahme mit einem Ausnahmetyp überprüfen. Vielen Dank! –

0

Versuchen in dieser Art und Weise:

try { 
    throw 1; 
} 
catch(e) { 
    if (e instanceof ReferenceError) { 
    } else if (typeof e === "string") { 
    } else { 
    } 
} 
finally { 
} 
0

Diese Art von Multiple fangen wir in JavaScript-Aufruf als Conditional catch-Klauseln

Sie auch einen oder mehrere bedingte catch-Klauseln verwenden können bestimmte Ausnahmen behandeln . In diesem Fall wird die entsprechende catch-Klausel eingegeben, wenn die angegebene Ausnahme ausgelöst wird. Wie unten

try { 
    myroutine(); // may throw three types of exceptions 
} catch (e if e instanceof TypeError) { 
    // statements to handle TypeError exceptions 
} catch (e if e instanceof RangeError) { 
    // statements to handle RangeError exceptions 
} catch (e if e instanceof EvalError) { 
    // statements to handle EvalError exceptions 
} catch (e) { 
    // statements to handle any unspecified exceptions 
    logMyErrors(e); // pass exception object to error handler 
} 

Nicht-Standard-: Aber Diese Funktion ist nicht-Standard und ist nicht auf eine Spur Standards. Verwenden Sie es nicht auf Websites, die mit dem Internet verbunden sind: Es funktioniert nicht für jeden Benutzer. Es kann auch zu großen Inkompatibilitäten zwischen den Implementierungen kommen und das Verhalten kann sich in Zukunft ändern.

Reference

+1

Danke, das ist _Non-standard_JS deshalb konnte ich nichts damit finden –