c# - HttpRequestException 未在 catch 块 xamarin.android 中捕获,而相同的代码在 UnitTest 应用程序中工作
问题描述
我有一个 xamarin android 项目,我在其中从 PCL 项目调用 API,所以当我在没有互联网连接的情况下调用该 API 时,它会抛出 HTTPRequestException,所以我将代码包装在 try/catch 块中,但仍然没有捕获到异常。
我已经在 UnitTest 应用程序中运行了该代码并且它按预期工作,所以我认为问题出在 xamarin.android 及其多线程中,所以我想知道是否有任何解决方法
public override async void OnActivityCreated(Bundle savedInstanceState)
{
base.OnActivityCreated(savedInstanceState);
try
{
progressBar.IsBusy = true;
progressBar.Visibility = ViewStates.Visible;
progressBar.Title = "Loading...";
var items = await ApiClient.Instance.GetAllAsync(); //this is supposed to throw httprequestexception when there is no internet connection.
layoutManager = new GridLayoutManager(Activity, 3, GridLayoutManager.Vertical, false);
onScrollListener = new CoinRecyclerViewScrollListener(layoutManager);
recyclerView.AddOnScrollListener(onScrollListener);
onScrollListener.LoadMoreEvent += OnScrollListener_LoadMoreEvent;
SetAdapterWithAnim(recyclerView);
progressBar.Visibility = ViewStates.Gone;
}
catch (HttpRequestException) //the exception is not caught
{
//some handling
}
}
解决方案
问题是由在 viewpager 中实现的第二个片段引起的,我忘记将 try/catch 包裹起来。
推荐阅读
- .net - 在 .Net 中使用 SqlBulkCopy 跟踪故障
- postgresql - 如果 UNIQUE 索引具有字段上定义的函数,jOOQ 代码生成器不会生成相应的索引
- python - 为什么scrapy返回错误说“'LoginSpider'对象没有属性'logged_in'”?
- java - 了解静态和实例成员
- reactjs - 获取数据后如何设置状态反应钩子
- angular - SwaggerUI - 如何在 Angular 9 中为 SwaggerUI 外部创建自定义布局和插件
- c# - 我该怎么做 if(在 if == "x")
- design-patterns - 我如何管理一些设计模式来解决这个问题
- unit-testing - 如何优雅地测试 Go 中包含多个客户端的方法?
- javascript - 在数组表js中插入值