有一个为我处理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
和其他类一样,你可以在实现中添加你想要的任何内容。
所以要真正简化事情:
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;
}
}