Android如何处理来自AsyncTask内部的网络异常

Android如何处理来自AsyncTask内部的网络异常,android,Android,我正在从异步任务调用Web服务。它工作正常,但我正在尝试测试它,当我关闭手机的移动网络。这是为了复制没有信号的用户 这是密码 @Override protected Void doInBackground(String... params) { try { Log.e(TAG, "inside doInBackground"); rotaArray = nfcscannerapplic

我正在从异步任务调用Web服务。它工作正常,但我正在尝试测试它,当我关闭手机的移动网络。这是为了复制没有信号的用户

这是密码

 @Override
        protected Void doInBackground(String... params) {

            try {
                Log.e(TAG, "inside doInBackground");


                rotaArray = nfcscannerapplication.loginWebservice.getRota(params[0], params[1]);


            } catch (Exception e) {

                Log.e(TAG, "there's a problem");

               e.printStackTrace();


            }
            return null;

        }

尽管抛出了java.net.ConnectionException,但log语句永远不会注销到logcat enev。我如何处理可能没有网络信号的情况,并优雅地退出应用程序,或者更好地再次调用activities oncreate?

我相信您希望提供一些消息或解决一些问题,以防出现网络故障……如果是这种情况,那么您需要检查您的设备是否有活动的网络连接

我想会有帮助的……:)

做这样的事

// this is inner to activity class
class MyAsyncTask extends AsyncTask {
...
    @Override
    protected Void doInBackground(String... params) {

        try {
            Log.e(TAG, "inside doInBackground");
            rotaArray = nfcscannerapplication.loginWebservice.getRota(params[0], params[1]);

        } catch (IOException e) {
           HandleNetworkError(e);
           e.printStackTrace();
        }
        return null;

    }
}
// Some where in your activity class.
void HandleNetworkError(Exception e) {
    // Do whatever with the exception message, eg display it in a dialog.
    ...
}

我会仔细检查logcat,如果它正在点击
e.printStackTrace
,那么应该有一个“有问题”的out。另外,你能提供更多的信息吗?这个问题很模糊,谢谢。