2014-05-15 37 views
1

有一個爲我處理Http請求的類。這個類包含了像如何設置和處理HTTP響應代碼

public static String getServerResponseByHttpGet(String url){...} 
public static String getServerResponseByHttpGet(String url, String token){...} 
public static String getServerResponseByHttpPost(String url, token, List<NameValuePair> pairs){...} 

我能夠通過使用httpResponse.getStatusLine().getStatusCode();

因爲我需要處理一樣,如果連接代碼是401,403,04,409,等不同的情況下,獲取連接代碼的一些方法那麼我想拋出這段代碼並將其捕獲到實現類中。有沒有可能做到這一點。我有以下類,但不知道如何修改它以發送整數值。

public class MyHttpClientException extends Exception { 

    public MyHttpClientException() { 

    } 

    public MyHttpClientException(String message) { 
     super(message); 
    } 

    public MyHttpClientException (Throwable cause) { 
     super (cause); 
    } 

    public MyHttpClientException (String message, Throwable cause) { 
     super (message, cause); 
    } 
} 
+0

將錯誤代碼放入您的會話中 –

回答

2

Exception s爲像其他類,你可以添加任何你在實現想要的。

因此,要真正簡化的東西:

public class MyHttpClientException extends Exception { 
    private final int errorCode; 

    public MyHttpClientException(final int errorCode) { 
     this.errorCode = errorCode; 
    } 

    // rest of the constructors, one example: 
    public MyHttpClientException(int errorCode, String message) { 
     super(message); 
     this.errorCode = errorCode; 
    } 

    public int getErrorCode{ 
     return errorCode; 
    } 
} 

然後在錯誤發生

throw new MyHttpClientException(errorCodeHere); 

當你抓住它:

try { 
    // request 
} catch (MyHttpClientException e) { 
    int errorCode = e.getErrorCode(); 
    // do whatever you want with it. 
} 
+0

感謝man的完整說明;) – Hesam

1

就像Java的RESTful服務API的WebApplicationException,您可以添加一個int會員到您的MyHttpClientException並設置它的構造函數:

public class MyHttpClientException extends Exception { 

    private int code; 

    public MyHttpClientException(int code) { 
     this.code = code; 
    } 
. 
. 
. 

    public int getCode(){ 
     return code; 
    } 
1

當程序員進入與例外的第一次接觸,他們總是延長Exception和創建所有這些構造函數,這個超級類有。

但是異常也是應該用作其他對象的完整對象。因此,聲明這種例外的最簡單方法是:

public final class MyHttpClientException extends Exception { 

    private int final httpCode; 

    public MyHttpClientException (int httpCode) { 
     super(String.valueOf(httpCode)); 
     this.httpCode = httpCode; 
    } 

    public MyHttpClientException (int httpCode, Throwable cause) { 
     super(String.valueOf(httpCode), cause); 
     this.httpCode = httpCode; 
    } 

    public int httpCode() { 
     return httpCode; 
    } 

}