마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

HttpResponse 예외처리에 대해 질문드립니다.

0 추천

안녕하세요, 서버관련 에러처리에 대해 질문좀 드립니다.

많이 다뤄본적이 없어서 설명이 다소 미흡할 수있으니 양해 부탁드립니다.

서버로부터 결과값을 받았을 때, 

1.성공값0 or 1에 따라 에러처리 

2.result값 자체가 null일 때 에러처리

3.IOException처리[try catch]

이렇게 두었습니다..

이전에 한번인가 두번 잠깐 본 에러현상이 있었는데 timeout이었습니다.

서버는 오픈되었는데 포트가 막혀서 발생한 에러라고 메모해두었는데요..

IOException처럼 TimeoutException를 사용하려 하니 다음과 같은 메시지가 떴습니다.

Unreachable catch block for SocketTimeoutException.

It is already handled by the catch block for IOException.

영어실력이 부족해서 완벽히 해석은 못했지만..

TimeoutException가 이미 IOException에 의해 처리된다는것인가요..?

만약을 대비해 여러개의 예외처리를 준비하려고 하는데,.. 조언부탁드립니다. 긴글 읽어주셔서 감사합니다.

HttpPost httpPost = new HttpPost(서버주소);
			try 
			{
				UrlEncodedFormEntity entity = new UrlEncodedFormEntity(
						valuelist, "UTF-8");
				httpPost.setEntity(entity);
				
				HttpResponse hres = httpclient.execute(httpPost);
				HttpEntity hentity = hres.getEntity();
				if (hentity != null) 
				{
					str="";//초기화
				
					responseStr = EntityUtils.toString(hentity);
					Log.e("-------responseStr------", responseStr); // 결과값출력
					
					//success 1 일 때만 성공
					str += responseStr;
				}	
				//return EntityUtils.getContentCharSet(entity);
			} 
			catch (ClientProtocolException e) 
			{
				//서버
				e.printStackTrace();
				Log.e("ClientProtocolException","ClientProtocolException......");
			} 
			catch (IOException e) 
			{
				e.printStackTrace();
				Log.e("IOException","IOException......");
			}

 

 

anci (19,950 포인트) 님이 2015년 7월 1일 질문

1개의 답변

0 추천
IO의 subclass가 소켓인것으로 알고있습니다~

 

따라서 socket timeout 을 따로 처리해주지않아도 I/O에서 알아서 감싸주긴하는데요..

 

하지만 자세한 사항을 알려면 (어떤곳에서 타임아웃이 났는지)

 

예외처리를 꼼꼼하게 해 주시는건 전혀 나쁜 습관이 아니라고 생각합니다.
안드로이드로우 (15,740 포인트) 님이 2015년 7월 2일 답변
...