[英]How to handle different exception http types with try-catch in Java?
我是Java API的初学者,正在编写RESTful API,现在需要编写API Handler来处理来自前端的请求。 只是注意到在处理请求时有很多HTTP错误。
所以我想知道如何在Java中使用try-catch
捕获这些异常。
我做了一个非常基本的try-catch
来处理InvalidRequestException
,它从客户端引用异常。
@Override
public String handle(final APIGatewayProxyRequestEvent event) {
if (event.getHttpMethod().equalsIgnoreCase(HttpMethod.POST.name())) {
try{
FeatureRecord featureRecord = Jackson.fromJsonString(event.getBody(), FeatureRecord.class);
featureProcessor.createFeature(featureRecord);
return EMPTY_STRING;
} catch (Exception ex) {
throw new InvalidRequestException(ex);
}
}
现在,我想拆分异常类型以区分不同的HTTP异常,如下所示:
@Override
public String handle(final APIGatewayProxyRequestEvent event) {
if (event.getHttpMethod().equalsIgnoreCase(HttpMethod.POST.name())) {
try{
FeatureRecord featureRecord = Jackson.fromJsonString(event.getBody(), FeatureRecord.class);
featureProcessor.createFeature(featureRecord);
return EMPTY_STRING;
} catch (InvalidRequestException ex) {
throw new InvalidRequestException(ex);
} catch (ServiceInternalException ex) {
throw new ServiceInternalException(ex);
} ... ...
}
但是我不知道如何编写catch
部分。
我知道https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500中有很多异常类型,但是如何使用try-catch
处理它们? 我需要编写新的异常类型吗?
如果捕获它们的共同祖先class
则可以通过一次catch
来catch
几种异常类型。 例如
try {
//some code
} catch (Exception ex) {
//handling the catch
}
将捕获所有异常,因此请尽可能地笼统,但仍会正确处理错误,因此根据您的情况,捕获Exception
可能是您的选择,也可能不是。
您正在捕获几种异常类型,而不是处理或throw
它们,而是throw
相同类型的异常。 例如,没有理由这样做:
try {
//some code
} catch (InvalidRequestException ex) {
throw new InvalidRequestException(ex);
}
代替这个:
try {
//some code
} catch (InvalidRequestException ex) {
throw ex;
}
但是,如果你catch
只抛出同样的异常,那么就具有不点catch
的。 您需要使错误变得用户友好,即,向用户发送响应以解释问题,然后throw
异常。 或者,您可以避免在catch
内catch
所有异常,而是记录一些消息。
当然,这是一个选择,如果您有一些自定义错误类型,这可能是可行的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.