【问题标题】:How to catch ConnectionException,UnknownHostException?如何捕获 ConnectionException,UnknownHostException?
【发布时间】:2017-05-02 03:26:47
【问题描述】:

我正在调用服务器任务,我想捕获所有与网络相关的异常。我收到了java.net.ConnectException。我没有从它的投掷和捕捉的地方得到。

服务器类:

  public class ServerRequest {
    String api;
    JSONObject jsonParams;

    public ServerRequest(String api, JSONObject jsonParams) {
        this.api = api;
        this.jsonParams = jsonParams;
    }

    public JSONObject sendRequest(){
        try {
            URL url = new URL(api);
            HttpURLConnection con = (HttpURLConnection)url.openConnection();
            con.setRequestMethod("POST");
            con.setRequestProperty("Content-Type", "application/json");
            con.setDoOutput(true);
            con.setDoInput(true);
            OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream());
            writer.write(jsonParams.toString());
            writer.close();

            int responseCode = con.getResponseCode();
            if  (responseCode == HttpURLConnection.HTTP_OK) {
                StringBuilder sb = new StringBuilder();
                BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
                String line = "";
                while ( (line = reader.readLine()) != null ){
                    sb.append(line);
                }
                reader.close();
                Log.d("ServerResponse", new String(sb));
                return new JSONObject(new String(sb));
            } else {
                throw new UnexpectedServerException("Unexpected server exception with status code : "+responseCode);
            }
        } catch (MalformedURLException me) {
            me.printStackTrace();
            return Excpetion2JSON.getJSON(me);
        } catch(IOException ioe) {
            ioe.printStackTrace();
            return Excpetion2JSON.getJSON(ioe);
        } catch(UnexpectedServerException ue) {
            ue.printStackTrace();
            return Excpetion2JSON.getJSON(ue);
        } catch (JSONException je) {
            je.printStackTrace();
            return Excpetion2JSON.getJSON(je);
        }

    }

    public ServerRequest(String api) {
        this.api = api;
    }


    public JSONObject sendGetRequest() {
        try {
            URL url = new URL(api);
            HttpURLConnection con = (HttpURLConnection)url.openConnection();
            con.setRequestMethod("GET");
            con.setDoInput(true);

            int responseCode = con.getResponseCode();
            if  (responseCode == HttpURLConnection.HTTP_OK) {
                StringBuilder sb = new StringBuilder();
                BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
                String line = "";
                while ( (line = reader.readLine()) != null ){
                    sb.append(line);
                }
                reader.close();
                Log.d("ServerResponse", new String(sb));
                return new JSONObject(new String(sb));
            } else {
                throw new UnexpectedServerException("Unexpected server exception with status code : "+responseCode);
            }
        } catch (MalformedURLException me) {
            me.printStackTrace();
            return Excpetion2JSON.getJSON(me);
        } catch(IOException ioe) {
            ioe.printStackTrace();
            return Excpetion2JSON.getJSON(ioe);
        } catch(UnexpectedServerException ue) {
            ue.printStackTrace();
            return Excpetion2JSON.getJSON(ue);
        } catch (JSONException je) {
            je.printStackTrace();
            return Excpetion2JSON.getJSON(je);
        }
    }
}

以下是例外:

  java.net.ConnectException: failed to connect to xesoftwares.co.in/104.131.162.126 (port 80): connect failed: ENETUNREACH (Network is unreachable)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at libcore.io.IoBridge.connect(IoBridge.java:124)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:504)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at java.net.Socket.connect(Socket.java:884)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.Platform.connectSocket(Platform.java:117)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:160)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.SocketConnector.connectCleartext(SocketConnector.java:67)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at com.android.okhttp.Connection.connect(Connection.java:152)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:437)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:245)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at com.weberz.helper.ServerRequest.sendRequest(ServerRequest.java:37)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at com.weberz.AsyncTasks.UpdateTokenAsyncTask.doInBackground(UpdateTokenAsyncTask.java:44)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at com.weberz.AsyncTasks.UpdateTokenAsyncTask.doInBackground(UpdateTokenAsyncTask.java:17)
12-16 16:08:17.811 10957-11559/com.weberz W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:295)
12-16 16:08:17.812 10957-11559/com.weberz W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
12-16 16:08:17.812 10957-11559/com.weberz W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
12-16 16:08:17.812 10957-11559/com.weberz W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
12-16 16:08:17.812 10957-11559/com.weberz W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
12-16 16:08:17.812 10957-11559/com.weberz W/System.err:     at java.lang.Thread.run(Thread.java:818)
12-16 16:08:17.812 10957-11559/com.weberz W/System.err: Caused by: android.system.ErrnoException: connect failed: ENETUNREACH (Network is unreachable)
12-16 16:08:17.812 10957-11559/com.weberz W/System.err:     at libcore.io.Posix.connect(Native Method)
12-16 16:08:17.817 10957-11559/com.weberz W/System.err:     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111)
12-16 16:08:17.817 10957-11559/com.weberz W/System.err:     at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
12-16 16:08:17.817 10957-11559/com.weberz W/System.err:     at libcore.io.IoBridge.connect(IoBridge.java:122)
12-16 16:08:17.817 10957-11559/com.weberz W/System.err:     ... 24 more
12-16 16:08:17.822 10957-11559/com.weberz W/System.err: java.net.ConnectException: failed to connect to xesoftwares.co.in/104.131.162.126 (port 80): connect failed: ENETUNREACH (Network is unreachable)
12-16 16:08:17.822 10957-11559/com.weberz W/System.err:     at libcore.io.IoBridge.connect(IoBridge.java:124)
12-16 16:08:17.822 10957-11559/com.weberz W/System.err:     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
12-16 16:08:17.822 10957-11559/com.weberz W/System.err:     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:504)
12-16 16:08:17.822 10957-11559/com.weberz W/System.err:     at java.net.Socket.connect(Socket.java:884)
12-16 16:08:17.822 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.Platform.connectSocket(Platform.java:117)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:160)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.SocketConnector.connectCleartext(SocketConnector.java:67)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at com.android.okhttp.Connection.connect(Connection.java:152)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:437)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:245)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at com.weberz.helper.ServerRequest.sendRequest(ServerRequest.java:37)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at com.weberz.Activities.MainActivity$GetUserAsyncTask.doInBackground(MainActivity.java:658)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at com.weberz.Activities.MainActivity$GetUserAsyncTask.doInBackground(MainActivity.java:622)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:295)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
12-16 16:08:17.823 10957-11559/com.weberz W/System.err:     at java.lang.Thread.run(Thread.java:818)
12-16 16:08:17.824 10957-11559/com.weberz W/System.err: Caused by: android.system.ErrnoException: connect failed: ENETUNREACH (Network is unreachable)
12-16 16:08:17.825 10957-11559/com.weberz W/System.err:     at libcore.io.Posix.connect(Native Method)
12-16 16:08:17.825 10957-11559/com.weberz W/System.err:     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111)
12-16 16:08:17.825 10957-11559/com.weberz W/System.err:     at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
12-16 16:08:17.825 10957-11559/com.weberz W/System.err:     at libcore.io.IoBridge.connect(IoBridge.java:122)
12-16 16:08:17.825 10957-11559/com.weberz W/System.err:     ... 24 more
12-16 16:08:17.831 10957-11559/com.weberz W/System.err: java.net.UnknownHostException: Unable to resolve host "xesoftwares.co.in": No address associated with hostname
12-16 16:08:17.832 10957-11559/com.weberz W/System.err:     at java.net.InetAddress.lookupHostByName(InetAddress.java:470)
12-16 16:08:17.832 10957-11559/com.weberz W/System.err:     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
12-16 16:08:17.832 10957-11559/com.weberz W/System.err:     at java.net.InetAddress.getAllByName(InetAddress.java:215)
12-16 16:08:17.832 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
12-16 16:08:17.832 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:188)
12-16 16:08:17.832 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:157)
12-16 16:08:17.832 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:100)
12-16 16:08:17.832 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:357)
12-16 16:08:17.832 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:340)
12-16 16:08:17.832 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
12-16 16:08:17.832 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:437)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:245)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err:     at com.weberz.helper.ServerRequest.sendRequest(ServerRequest.java:37)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err:     at com.weberz.AsyncTasks.GetContactsAsyncTask.doInBackground(GetContactsAsyncTask.java:90)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err:     at com.weberz.AsyncTasks.GetContactsAsyncTask.doInBackground(GetContactsAsyncTask.java:32)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:295)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err:     at java.lang.Thread.run(Thread.java:818)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err: Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err:     at libcore.io.Posix.android_getaddrinfo(Native Method)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err:     at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
12-16 16:08:17.833 10957-11559/com.weberz W/System.err:     at java.net.InetAddress.lookupHostByName(InetAddress.java:451)
12-16 16:08:17.834 10957-11559/com.weberz W/System.err:     ... 22 more

如何捕获UnknownHostExceptionjava.net.ConnectionExceptionUnexpectedServerExceptionMalformedServerException 的所有这些异常?

我试图在JSONException 之后捕获postExecute 方法中的异常,但它显示这里没有抛出异常..

请帮忙。谢谢。。

编辑:我尝试了类似这样的方法来添加一个布尔变量,并在异常抛出但不工作时使其为真。请检查;

   public class GetContactsAsyncTask extends AsyncTask<String, Void, JSONObject> {
    String api;
    String userId;
    JSONObject jsonParams;
    private ArrayList<Contact> contactList = new ArrayList<Contact>();
    public JSONArray contactListArray;
    private RecyclerView recyclerView;
    ContactGetCallBack contactGetCallBack;
    private ContactAdapter adapter;
    private static String KEY_SUCCESS1 = "Success";
    private Context mContext;
    private ProgressDialog progressDialog;
    private MainActivity activity;
    private ContactTableHelper contactDb;
    private Boolean exception = false;

    public GetContactsAsyncTask(ContactGetCallBack contactGetCallBack, Context context, String userId,MainActivity activity) {
        this.mContext = context;
        this.userId = userId;
        this.contactGetCallBack=contactGetCallBack;
        this.progressDialog = new ProgressDialog(mContext);
        this.activity = activity;
    }
    public interface ContactGetCallBack {
        void doPostExecute(ArrayList<Contact> contactArrayList ) throws JSONException;
    }

    @Override
    protected void onPreExecute() {

        super.onPreExecute();

        if(!isOnline())
        {
            activity.showAlert("Please check internet connection.");
        }
        else {

            // progressDialog=new ProgressDialog(mContext);
            progressDialog.setMessage("Please wait...");
            progressDialog.setIndeterminate(false);
            progressDialog.setCancelable(false);
            progressDialog.show();
        }
    }



    @Override
    protected JSONObject doInBackground(String...params) {
        try {
            api = ServiceUrl.getBaseUrl() + ServiceUrl.getContactsUrl();;
            jsonParams = new JSONObject();

            String user_id = this.userId;

            jsonParams.put("user_id", user_id); // params[0] is userid

            ServerRequest request = new ServerRequest(api, jsonParams);
            return request.sendRequest();

        } catch (JSONException je) {
            return Excpetion2JSON.getJSON(je);
        }
        catch (Exception ue) {

            progressDialog.dismiss();
            activity.showAlert("Please check internet connection.");
            exception = true;
            return Excpetion2JSON.getJSON(ue);
        }

    }  //end of doInBackground

    @Override
    protected void onPostExecute(JSONObject response) {
        super.onPostExecute(response);

        if (response.has("message"))
        {
            try {
                if( response.getString("message").equalsIgnoreCase(KEY_SUCCESS1)){
                   // Toast.makeText(mContext,"success", Toast.LENGTH_LONG).show();

                     contactListArray = response.getJSONArray("contacts");

                    contactDb = new ContactTableHelper(mContext);

                    for (int i = 0; i < contactListArray.length(); i++) {
                        JSONObject subObject1 = contactListArray.getJSONObject(i);

                        Contact contact = new Contact();
                        JSONObject subObject = subObject1;
                        String contactName = subObject.getString("user_name");
                        //name of the attribute in response
                        String pass = subObject.getString("password");
                        String contactId = subObject.getString("user_id");
                        String contactMobile = subObject.getString("mobile_no");
                        String contactEmailId = subObject.getString("email_id");
                        String contactProfile = subObject.getString("profile_image");
                        String fullName = subObject.getString("full_name");
                        String jobTitle = subObject.getString("job_title");
                        String homeAddress = subObject.getString("home_address");
                        String workPhone = subObject.getString("work_phone");
                        String workAddress = subObject.getString("work_address");
                        String company = subObject.getString("company");

                        contact.setmThumbnail(contactProfile);
                        contact.setmUserName(contactName);
                        contact.setmMobileNo(contactMobile);
                        contact.setmEmailId(contactEmailId);
                        contact.setmProfileImage(contactProfile);
                        contact.setContactId(contactId);
                        contact.setmHomeAddress(homeAddress);
                        contact.setmFullName(fullName);
                        contact.setmJobTitle(jobTitle);
                        contact.setmWorkAddress(workAddress);
                        contact.setmWorkPhone(workPhone);
                        contact.setmPass(pass);
                        contact.setmCompany(company);

                        contactList.add(contact);//adding string to arraylist

                        contactDb.addContact(new Contact(contactId,contactName,pass,contactMobile,contactEmailId,contactProfile,fullName,jobTitle,workAddress,workPhone,homeAddress,company));

                        contactDb.close();
                    }
                    contactGetCallBack.doPostExecute(contactList);

                    progressDialog.dismiss();
                }
                else if(response.getString("message").equalsIgnoreCase("Contact list is empty")){

                    progressDialog.dismiss();
                    activity.showAlert("You do not have any contacts yet.");
                }
            }
            catch (JSONException e)
            {
                e.printStackTrace();
               // progressDialog.dismiss();
            //   activity.showAlert("Please check internet connection.");

            }
           if(exception)
           {
               activity.showAlert("Please check internet connection.");
           }
        }
    }
    public boolean isOnline() {
        ConnectivityManager cm =
                (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        return netInfo != null && netInfo.isConnectedOrConnecting();
    }
    //end of onPostExecute
}

我也有 Exception2Json 类

   public class Excpetion2JSON {
    public static JSONObject getJSON(Exception e) {
    try{
        JSONObject json = new JSONObject();
        json.put("result", -4);
        json.put("message", e.getMessage());
        return json;
    } catch(JSONException je) {
        return null;
    }
}
}

还有 UnexpectedServerException 类:

public class UnexpectedServerException extends Exception {
    public UnexpectedServerException(String msg) {
        super(msg);
    }
}

【问题讨论】:

  • 您是否在清单文件中添加了互联网权限
  • 是的,我已经添加了。 @普拉文
  • 互联网连接正常,我想捕捉异常。

标签: java android exception try-catch unknown-host


【解决方案1】:

您的网络调用在后台启动(异步模式),因此您应该在 doInBackground 中使用 try catch 并在 GetContactsAsyncTask 类中设置一个变量,该变量将检查 onPostExecute 以返回适当的值。 考虑 onPostExecute 将在 UiThread 上运行。

【讨论】:

  • 使用 try catch 块在 doInBackground 中捕获异常并将其设置为 GetContactsAsyncTask 类的异常字段。之后,您应该检查 onPostExecute 方法中的异常类字段,如下所示: if (exception instanceof MalformedServerException) { exception.getSomeCustomViolations(); } else if (exception instanceof java.net.ConnectionException) { exception.getSomeOtherCustomViolations(); } 和 ...
  • 但是如果我尝试在 doInbackground 方法中捕获 UnnownKnownHost 异常,它会给我一个错误,即这里没有抛出这个异常。能给我看看演示代码吗
  • docs.oracle.com/javase/7/docs/api/java/net/… 使用 UnknownHostException 的父类来捕获。使用instanceof检查后。
  • 还没搞定。请你帮我写代码。
【解决方案2】:

将这些异常添加到您的 sendRequest 方法中,或者添加到您现有的 catch 块中,或者只是更改它catch (Exception e)

【讨论】:

    猜你喜欢
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 2018-02-19
    • 2013-03-24
    相关资源
    最近更新 更多