In JS scheint es nicht möglich zu sein, zu überprüfen, ob ein an eine Funktion übergebenes Argument tatsächlich vom Typ 'error' oder eine Instanz von Error ist.
Dies ist beispielsweise nicht gültig:
typeof err === 'error'
da es nur 6 mögliche Typen gibt (in Form von Strings):
Der Operator typeof gibt Typinformationen als Zeichenfolge zurück. Es gibt sechs mögliche Werte, die typeof
zurückgegeben werden:
"number", "string", "boolean", "object", "function" und "undefined".
Aber was ist, wenn ich einen einfachen Anwendungsfall wie diesen habe:
function errorHandler(err) {
if (typeof err === 'error') {
throw err;
}
else {
console.error('Unexpectedly, no error was passed to error handler. But here is the message:',err);
}
}
Was ist der beste Weg, um festzustellen, ob ein Argument eine Fehlerinstanz ist?
ist der instanceof
Betreiber irgendeine Hilfe?
err
(sagen), ihn dann aber zur Übergabe an das übergeordnete Fenster übergeben (err instanceof Error) === false
. Dies liegt daran, dass der Iframe und sein übergeordnetes Fenster unterschiedliche Error
Objektprototypen haben. In ähnlicher Weise wird ein Objekt wie obj = {};
will, wenn es an eine Funktion übergeben wird, die in einem anderen Fenster ausgeführt wird, yeild (obj instanceof Object)===false
. (Selbst im schlimmsten Fall, wenn Sie im IE einen Verweis auf obj behalten, nachdem sein Fenster zerstört oder navigiert wurde, wird der Versuch, Objektprototyp-Fns wie aufzurufen obj.hasOwnProperty()
, Fehler auslösen !)
catch((err)=>{if (err === ENOENT)
gibt ENOENT is not defined
Fehler zurück?
err instanceof Error