如何使用捕获错误处理角度错误
Posted
技术标签:
【中文标题】如何使用捕获错误处理角度错误【英文标题】:How to handle the error in angular with catch error 【发布时间】:2019-06-30 04:03:29 【问题描述】:我正在使用 Angular 7。这是我的服务。
get()
return this.http.post(this.url).pipe(
catchError(this.handleError)
)
这是错误处理程序代码。
handleError(errorResponse: HttpErrorResponse)
if (errorResponse.error instanceof ErrorEvent)
return throwError(errorResponse.error.message)
else
switch (errorResponse.status)
case 400:
return throwError(errorResponse.error.message)
case 401:
return throwError(errorResponse.error.message)
case 409:
return throwError(errorResponse.error.message)
case 500:
return throwError(errorResponse.error.message)
这是我在按下提交按钮时收到的错误。
core.js:15714 ERROR TypeError: You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
at subscribeTo (subscribeTo.js:41)
at subscribeToResult (subscribeToResult.js:11)
at CatchSubscriber.push../node_modules/rxjs/_esm5/internal/operators/catchError.js.CatchSubscriber.error (catchError.js:43)
at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber._error (Subscriber.js:79)
at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.error (Subscriber.js:59)
at FilterSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber._error (Subscriber.js:79)
at FilterSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.error (Subscriber.js:59)
at MergeMapSubscriber.push../node_modules/rxjs/_esm5/internal/OuterSubscriber.js.OuterSubscriber.notifyError (OuterSubscriber.js:13)
at InnerSubscriber.push../node_modules/rxjs/_esm5/internal/InnerSubscriber.js.InnerSubscriber._error (InnerSubscriber.js:18)
at InnerSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.error (Subscriber.js:59)
请在这种情况下帮助我。
【问题讨论】:
您可能不会从catchError
的回调中返回任何内容。
使用try catch。将您的代码放入 try 并在控制台中捕获错误。
TypeError: You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable的可能重复
什么是导致问题的 HTTP 请求的响应?您可能需要为您的开关添加默认情况
【参考方案1】:
这是一个错误,表明您未能在 observable 中提供流。
这通常发生在您没有向 switchMap
、combineLatest
或在本例中为 catchError
等运算符提供可观察对象时。
只需添加一个
return of(undefined);
在您的catchError
中解决问题。
【讨论】:
【参考方案2】:你从你的 catchError 操作符返回 undefined。 catchError 操作符希望你返回一个 observable。
get()
return this.http.post(this.url).pipe(
catchError((err) =>
// handle the error
// use the empty() factory method to return an observable
// that emits nothing and completes
return empty();
)
)
参考:empty
【讨论】:
以上是关于如何使用捕获错误处理角度错误的主要内容,如果未能解决你的问题,请参考以下文章
当我创建一个函数来处理我的 xhrhttp 请求时,如何解决未捕获的类型错误?