重构 catch 语句
Refactor catch statements
我们的代码中有许多 try-catch 块来处理 api 调用的异常。由于大多数 catch 块是相同的,我们想重构它们并且只重构它们(因为 try 块应该留在它们所在的位置)。这在 Flutter 中怎么可能?
示例代码:
try {
_userData = apiService.call("user_data");
} on ResourceNotFoundException {
handleResourceNotFoundException();
} on NetworkException {
handleNetworkException();
}
你应该为你的 API 调用添加一些抽象,这意味着你应该添加一个函数,它接受你试图调用的 API 调用作为参数,并用 try- 包围它catch 块并在那里处理所有异常。
这样您就将 API 调用逻辑与异常处理分开了。
我找到的最佳解决方案是使用通用 catch
,将所有内容放入 handleException
函数,然后在其中再次抛出异常。
try {
_userData = apiService.call("user_data");
} on catch (e) {
handleException(e);
}
void handleException(e) {
try {
throw e;
} on ResourceNotFoundException {
handleResourceNotFoundException();
} on NetworkException {
handleNetworkException();
}
}
这样就可以重用异常处理逻辑并对其进行扩展。
我们的代码中有许多 try-catch 块来处理 api 调用的异常。由于大多数 catch 块是相同的,我们想重构它们并且只重构它们(因为 try 块应该留在它们所在的位置)。这在 Flutter 中怎么可能?
示例代码:
try {
_userData = apiService.call("user_data");
} on ResourceNotFoundException {
handleResourceNotFoundException();
} on NetworkException {
handleNetworkException();
}
你应该为你的 API 调用添加一些抽象,这意味着你应该添加一个函数,它接受你试图调用的 API 调用作为参数,并用 try- 包围它catch 块并在那里处理所有异常。
这样您就将 API 调用逻辑与异常处理分开了。
我找到的最佳解决方案是使用通用 catch
,将所有内容放入 handleException
函数,然后在其中再次抛出异常。
try {
_userData = apiService.call("user_data");
} on catch (e) {
handleException(e);
}
void handleException(e) {
try {
throw e;
} on ResourceNotFoundException {
handleResourceNotFoundException();
} on NetworkException {
handleNetworkException();
}
}
这样就可以重用异常处理逻辑并对其进行扩展。