0
這是我SqlExceptionMapper新澤西州的SQLException映射不叫
@Provider
public class SqlExceptionMapper implements ExceptionMapper<SQLException> {
@Override
public Response toResponse(SQLException e){
return ResponseBuilder.error(Response.Status.UNAUTHORIZED.getStatusCode(), "success", null, e.getMessage());
}
}
在這裏,我拋出的異常在我的函數的catch塊
public void myfunction()throws SQLException {
try {
// some code that throws an sql exception
} catch (SQLException e) {
final Logger logger = Logger.getLogger(Image.class);
logger.error("This is error", e);
throw new SQLException();
}
}
這是我的web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application -image Rest API's</display-name>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.image.controller;com.image.exceptionmapper</param-value>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
我調試了我的代碼,並且我的catch塊拋出了SQLException,唯一的問題是它沒有映射到映射器whi我已創建。
我不認爲你可以註冊exceptionmapper作爲「包」。我不知道你正在使用哪種版本的球衣,但通常使用ResourceConfig對象更方便,請參閱[這個問題](http://stackoverflow.com/questions/31501110/registering-a-provider-編程功能於球衣-其中-器具-exceptionmapp)。希望能幫助到你。 – lrnzcig
你使用哪種運動衫版本,1.x?什麼是類'SqlExceptionMapper'的包名?會發生什麼 - 你有500嗎? –
我用不同的名稱重新編譯了我的代碼我使用SQLExceptionMapper將其從sqlExceptionMapper中更改爲它,並且它正在工作。 謝謝 –