我有一个看起来像这样的小方法:处理某些运行时HTTP异常的良好做法是什么?
public static void unstarTrack(Context ctxContext, String strId) {
try {
HttpParams htpParameters = new BasicHttpParams();
List<NameValuePair> lstCredentials = new ArrayList<NameValuePair>();
lstCredentials.add(new BasicNameValuePair("t", String.valueOf(System.currentTimeMillis()/1000)));
lstCredentials.add(new BasicNameValuePair("__call", "favourites.removeSong"));
HttpPost htpPost = new HttpPost(API_URL);
htpPost.setEntity(new UrlEncodedFormEntity(lstCredentials));
htpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0");
htpPost.addHeader("Accept-Encoding", "gzip");
DefaultHttpClient dhcClient = new DefaultHttpClient(htpParameters);
HttpResponse resResponse = dhcClient.execute(htpPost);
Log.d(TAG, EntityUtils.toString(resResponse.getEntity()));
return;
} catch (SocketException e) {
throw new RuntimeException("problem with network connectivity.", e);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("Encoding not supported.", e);
} catch (ClientProtocolException e) {
throw new RuntimeException("A protocol exception was encountered.", e);
} catch (ParseException e) {
throw new RuntimeException("An error occurred while trying to read the header elements.", e);
} catch (IOException e) {
throw new RuntimeException("An error occurred while trying to read response stream.", e);
}
}
的方法本身是很简单,但它包含了许多例外,一个发生,我不知道我应该如何处理那些。通过做一个简单的'e.printStackTrace()'来压制他们似乎不是一个好主意,所以我开始阅读异常处理最佳实践,但我仍然有点失落。我应该如何处理例外情况?
我需要对我的例外做些事情,因为我不想从该方法返回null
。从我的方法中返回一个null
意味着调用方法将无法了解我的方法内是否发生异常。
我应该创建一个自定义异常,并提出或应该简单地引发未经检查的异常?
调用方法不能真正做很多工作来影响我的方法,即一个SocketException
如果有与网络连接问题可能会发生,如果有读取流的问题,可能会出现一个IOException
。调用方法可以做的最多的事情就是稍后再试。
如果我重新抛出所有我已经陷入的异常,那么调用方法就会被异常处理块搞砸了。
(我很抱歉,如果这似乎是一个微不足道的问题,我只是想学写更好的代码。谢谢。)
你正在抛出异常,如果发生异常,你将不会返回null,你将不会返回任何东西。无论如何,你的方法被声明为“void” - 你*不能*返回任何东西。 *如何处理异常完全取决于...您想如何处理异常。 –
只捕捉对用户或您自己有所影响的异常。一个异常有一个getMessage()方法,可以在任何情况下使用,即使它捕获catch(Exception e)。如果发生任何异常,也决定如何处理。应用程序是否终止?它应该显示一条消息吗?如果您针对某些异常提出了不同的答案,则只需要捕获特殊的例外情况。 –