2017-06-02 18 views
5

मुझे कोणीय 4 ऐप में वैश्विक त्रुटि प्रबंधन को लागू करने की आवश्यकता है। यह ErrorHandler तंत्र है, जो कुछ मामलों के लिए काम करता है, लेकिन सभी के लिए नहीं। पूर्व: जब हमें कुछ महत्वपूर्ण त्रुटि मिली, जैसे अनुपलब्ध टेम्पलेट या कुछ, ErrorHandler इसे अनदेखा करें। जब मैं टेम्पलेट के लिए गलत URL का उपयोग करूं Zone.js त्रुटि मिलती है:कोणीय 2/4 वैश्विक त्रुटि हैंडलिंग

zone.js?fad3:567 Unhandled Promise rejection: Template parse errors: 
'my-app' is not a known element: 

Zone.js अपवाद नहीं है, यह सिर्फ त्रुटि सांत्वना देते हैं, तो window.onerror भी काम नहीं करता।

त्रुटि हैंडलर:

providers: [ 
     AuthGuard, 
     { provide: ErrorHandler, useClass: CommonErrorHandler } 
} 

युपीडी plnkr उदाहरण कहा::

example

+0

क्या आप अपने वर्तमान 'त्रुटि हैंडलर' के लिए कोड प्रदान कर सकते हैं? – Arg0n

+0

@ Arg0n, कोड जोड़ा गया। –

उत्तर

6

कोणीय का उपयोग करता है app.module में

@Injectable() 
export class CommonErrorHandler implements ErrorHandler { 
    constructor(private injector: Injector) { 

    } 


    public handleError(error: any): void { 
     console.log("error", error); 
    } 
} 

पंजीकरण https://github.com/angular/zone.js/blob/master/dist/zone.js#L633

आप इन त्रुटियों को पार्स करने NgZone सेवा का उपयोग करने की जरूरत है:: https://angular.io/docs/ts/latest/api/core/index/NgZone-class.html

NgZone एपीआई एक "प्रायोगिक" के रूप में चिह्नित किया गया है, लेकिन मैं नहीं जानता कि यह कैसे वास्तविकता से संबंधित है zone.js बिना क्रिया अपवाद और अस्वीकृति पार्स करने के लिए । व्यापक रूप से उपयोग किए गए एपीआई का समूह अभी भी "प्रयोगात्मक" है।

उदाहरण:

@Component(...) 
class AppComponent { 
    constructor(protected zone: NgZone) { 
    this.zone.onError.subscribe((e) => { 
     console.log(e); 
    }); 
    setTimeout(() => { 
     throw new Error(); 
    }, 1000); 
    setTimeout(() => { 
     Promise.reject('unhandled'); 
    }, 1000); 
    } 
} 

इस तरह से आप त्रुटियों के दोनों देख सकते हैं।

@EDIT: मुझे यह https://angular-2-training-book.rangle.io/handout/zones/ बहुत उपयोगी मिला।

+0

धन्यवाद। लेकिन यह काम नहीं कर रहा है। AppComponent प्रारंभिक से पहले कोणीय ब्रेक की तरह लग रहा है। –

+0

इस https://plnkr.co/edit/FQxR45n7oBYuexsMNWPl?p=info के लिए प्लंकर बनाया गया –

संबंधित मुद्दे