我使用felangel的bloc库。我通过在mapEventToState方法中使用存储库来获取数据。如果存储库引发异常,我想将其捕获到全局异常处理程序中。
@override
Stream<MyState> mapEventToState(Event event) async* {
if (event is MyEvent) {
try {
var data = await repository.fetchData();
yield MyState(data);
} catch (e) {
//There may be many exceptions
}
}
}
有没有没有try-catch块的异常捕获方法,什么是最佳实践?
答案 0 :(得分:-1)
您可以编写一个实用程序来管理错误。我为此写了一些东西。这可能是您的想法。
static String handleError(Error error) {
String errorDescription = "";
if (/*error is SomethingError*/) {
switch (error.type) {
case ErrorType.CANCEL:
errorDescription = "ErrorType.CANCEL";
break;
case ErrorType.CONNECT_TIMEOUT:
errorDescription = "ErrorType.CONNECT_TIMEOUT";
break;
case ErrorType.DEFAULT:
errorDescription = "ErrorType.DEFAULT";
break;
case ErrorType.RECEIVE_TIMEOUT:
errorDescription = "ErrorType.RECEIVE_TIMEOUT";
break;
case ErrorType.RESPONSE:
switch (error.response.toString()) {
case "usernamePasswordFail":
errorDescription = "usernamePasswordFail";
break;
default:
errorDescription = "errorDescription";
}, ${error.response.data ?? ''}";
break;
}
break;
case ErrorType.SEND_TIMEOUT:
errorDescription = "ErrorType.SEND_TIMEOUT";
break;
}
} else {
errorDescription = "somethingElseError";
}
return errorDescription;
}