如何设置和处理HTTP响应代码

时间:2014-05-15 07:58:39

标签: java exception exception-handling

有一个为我处理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);
    }
}

3 个答案:

答案 0 :(得分:2)

Exception和其他类一样,你可以在实现中添加你想要的任何内容。

所以要真正简化事情:

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.
}

答案 1 :(得分: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;
    }

答案 2 :(得分: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;
    }

}