利用failure库配合actix-web
,用failure::Error
来代表一个最顶层的Error,路由里面返回Result<HttpResponse>
,默认的Error
是actix-web::Error
,actix::Error
实现了From<fialure::Error>
,就是说failure::Error
可以用into()
转化成actix-web::Error
。
如果自己设计了一个ServerError
,先derive(Fail)
,即是先实现failure
库中的Fail trait
,就可以和failure:Error
自由转化了。
通过ServerError.into()
可以转成failure::Error
,通过Error.downcast::<ServerError>().unwrap()
可以转成ServerError
。
这样子错误处理就方便多了,统一管理了。