Angulaire 4, personnalisé ErrorHandler ne reconnaît pas d'Erreur personnalisé
J'ai essayé de créer un personnalisé, global ErrorHandler et suivi les instructions détaillées ici
l'application gestionnaire d'erreurs (en partie)
@Injectable()
export class ApplicationErrorHandler extends ErrorHandler {
constructor(private injector: Injector) {
super(false);
}
handleError(error: any): void {
if (error instanceof ApplicationError || error.originalError instanceof ApplicationError) {
this.addError(error.originalError);
}
else {
super.handleError(error);
}
}
app-module
providers: [
{
provide: ErrorHandler,
useClass: ApplicationErrorHandler
}
],
app.composant (seulement la partie importante)
public ngOnInit(): void {
const error = new ApplicationError();
error.message = "fehler";
throw error;
}
demande-erreur
export class ApplicationError implements Error {
name: string;
message: string;
httpStatus?: number = 404;
applicationStatus?: number;
errorMessageTranslationkey: string;
handled: boolean = false;
}
dans mon application.composant je jette un ApplicationError (en ngOnInit), mon ErrorHandler est appelé avec succès.
Mais mon erreur dans handleError
est toujours de type Error
et error.originalError
est toujours undefined
, peu importe si je jette mon erreur personnalisé et là, le if
permettra jamais de résoudre vrai.
Je n'ai aucune idée de pourquoi et le comment de ce qui se passe.
Ce que je vois, c'est que l'erreur devient, donc, je suppose, enveloppé parce que quand je debug, je vois error: Error: [object: Object] at viewWrappedDebugError (vendor.bundle.js)
Aucune idée de ce qui pourrait causer ce problème et comment le résoudre?
MODIFIER
Comme suspect, il a quelque chose à voir avec Debugmode. Dès que j'active prodmode avec enableProdMode();
qu'il fonctionne comme prévu.
Encore ce n'est pas vraiment répondre à ma question.
Comment puis-je gérer mon erreur personnalisé angulaire sur le mode debug?
throw new ApplicationError()
? Notez également que @NgModule()
providers
bien besoin d'être un tableau comme dans ceci de la définition.J'ai ajouté le code où je suis jeter de l'erreur. la chose avec
provider
était une faute de frappe. J'ai mis à jour le codeOriginalL'auteur Arikael | 2017-05-22
Vous devez vous connecter pour publier un commentaire.
Vous rencontrez ce problème, car
ApplicationError
n'est pas unError
.Vous pouvez utiliser le code suivant pour créer un message d'erreur personnalisé:
Liés au thème de la création d'un message d'erreur personnalisé, vérifiez également ces liens afin d'avoir une idée sur le sujet:
Pourquoi ce doit être une instance d'Erreur?
Parce que votre erreur de passer par la méthode suivante:
Code disponible à
erreurs.ts
.Par conséquent, si vous n'êtes pas à jeter un
Error
instance, une nouvelle instance est créée.Interception uncatched promesses dans ErrorHandler
Une autre erreur lorsque vous retournez une promesse qui devient rejeté, à partir de votre méthode qui est appelée par l'angle du cycle de vie (par exemple: gestionnaire du cycle de vie de crochet).
Par conséquent, le code de gestion d'erreur peut ressembler à:
j'ai besoin de faire la même chose, sauf que j'ai besoin pour envoyer un mail, pouvez-vous me donner plunker ?
et elle est appelée deux fois/plusieurs fois, il doit charger qu'une seule fois.
OriginalL'auteur andreim