WebApplicationException - это способ, с помощью которого вы можете остановить выполнение ресурса REST и отправить некоторую значимую информацию своему клиенту.Для вещей, которые я делал, я подклассифицировал это исключение, чтобы оно имело реализацию, которая выдает JSON в виде сообщений об ошибках клиенту.В случае возникновения ошибки, скажем, отсутствующий файл, я мог бы сделать что-то вроде этого:
}catch(FileNotFoundException ex){
throw new MyException(ex.getMessage());
На клиенте это тогда выдает что-то вроде:
{ errorCode: 56, errorMessage: 'could not find file "input.txt"' };
http://download.oracle.com/javaee/6/api/javax/ws/rs/WebApplicationException.html'
Исключение WebServiceException является корневым исключением времени выполнения для Джерси, т. Е. Его чаще всего возникает в результате сбоя ресурсов и в результате получается HTTP 500.
http://download.oracle.com/javaee/5/api/javax/xml/ws/WebServiceException.html
Таким образом, краткий ответ - первое исключение, которое вы можете выбросить, а другое, которое, как вы надеетесь, никогда не будет выброшено.: P
Пример:
public class MyException extends WebApplicationException {
public MyException(JSONObject jsonObject) {
super(Response.status(Response.Status.OK)
.entity(jsonObject)
.type(MediaType.APPLICATION_JSON)
.build());
}
Затем из любого места в вашем коде вы хотите остановить выполнение и отправить клиенту информацию об ошибке:
}catch(FileNotFoundException ex){
throw new MyException(new JSONObject(){{ this.put("errorCode", 4); .... }});