2016-09-14 8 views
7

मेरे पास नई श्रेणी त्रुटि हैडलर (आरसी 6 में शामिल किया गया था) के बारे में एक प्रश्न है।एंगुलर 2 में त्रुटि हैडलर

मैं आधिकारिक डॉक्स से उदाहरण किया: https://angular.io/docs/ts/latest/api/core/index/ErrorHandler-class.html

import{ErrorHandler} from "@angular/core"; 
import{NgModule} from "@angular/core"; 
export class MyErrorHandler implements ErrorHandler { 

    call(error: any, stackTrace: any = null, reason: any = null) { 
     // do something with the exception 
     console.log("do something with the exception"); 
    } 

    // I handle the given error. 
    public handleError(error: any): void { 
     console.log("I handle the given error"); 
    } 

} 
@NgModule({ 
    providers: [ 
     { 
      provide: ErrorHandler, 
      useClass: MyErrorHandler 
     } 
    ] 
}) 
export class MyErrorModule {} 

के बाद मैं अपने app.module फ़ाइल संपादित

import {MyErrorHandler} from "./error.module"; 
import {MyErrorModule } from "./error.module"; 
.. 
@NgModule({ 
    imports: [ 
     MyErrorModule 
    .... 
    ], 
    ... 
    providers: [MyErrorHandler] 
    .... 

अब MyErrorHandler त्रुटियों पकड़ता:

throw new Error("my test error"); 

लेकिन यह नहीं करता है http त्रुटियों को पकड़ें जैसे: "http://example.com/rest/user 401 प्राप्त करें (अनधिकृत) "। क्या कोई मुझे यह समझा सकता है?

अग्रिम धन्यवाद!

उत्तर

5

जोर से बोलते हुए 401 (या उस मामले के लिए और कुछ भी) बिल्कुल एक त्रुटि नहीं है। यह सिर्फ एक HTTP रिटर्न कोड है। यदि ऐसा कोड आपकी एप्लिकेशन कार्यक्षमता को तोड़ देता है तो आपको इसे स्वयं संभालना होगा। लेकिन वास्तविक त्रुटियां हैं जैसे कनेक्शन त्रुटि जो मैं जानना चाहूंगा कि कैसे संभालना है। यहाँ इसके बारे में मेरे सवाल है: Angular 2 http service. Get detailed error information

10

HTTP त्रुटियों को संभालने के लिए नमूदार

return this.http.get(url,options) 
    .catch((res)=>this.handleHTTPError(res)); 

एक http कॉल 4-500s में स्थिति कोड लौटाने जब फ़ंक्शन कॉल किया जाएगा करने के लिए एक .catch() ऑपरेटर जोड़ें। वहां से आप

handleHTTPError(res:Response){ 
    throw new Error("HTTP error: "+res.statusText+" ("+res.status+")"); 
} 
+5

कस्टम त्रुटि हैंडल/सेवा के साथ HTTP त्रुटियों को संभालने का कोई तरीका है? जिस कारण से मैं पूछ रहा हूं वह इसलिए है क्योंकि मेरे पास कई सेवाएं हैं और उनमें से कई में HTTP कॉल हैं। मैं एक 'हैंडलेट एचटीटीपी त्रुटि' विधि घोषित करने में सक्षम होना चाहता हूं – Kosmonaft