重构 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();
   }
 }

这样就可以重用异常处理逻辑并对其进行扩展。