首页 > 解决方案 > 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
            }
}

标签: c#.netxamarinxamarin.android

解决方案


问题是由在 viewpager 中实现的第二个片段引起的,我忘记将 try/catch 包裹起来。


推荐阅读