【发布时间】:2017-11-11 18:08:39
【问题描述】:
我将 gwtp 与 REST 服务一起使用,使用 ResourceDelegate 在客户端和服务器之间共享我的接口。目前一切正常。
现在我想在客户端添加异常处理,在阅读了官方文档、carstore 示例、SO 上的多个帖子之后,我仍然想知道框架做了什么以及留给我什么。
所以,目前,在服务器端,我使用 Spring 和 REST Easy,我的资源如下所示: 接口:
package ***.shared.rest;
@Path("books")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface BookResources {
@GET
BookDTO getBook(@PathParam("id") Integer bookId) throws BookKeyDecodingException;
}
实施:
package ***.server.rest;
@Component
@Transactional(readOnly = true)
public class BookResourcesImpl implements BookResources {
@Autowired
private BookService bookService;
@Autowired
private DtoFactory dtoFactory;
@Override
public BookDTO getBook(String bookKey) throws BookKeyDecodingException {
BookDTO bookDTO = BookKeyUtils.decode(supplementKey);
BookModel bookModel = dtoFactory.convertSupplementSuggestionDTO(suggestionDTO);
return bookService.getBook(bookDTO.getId());
}
}
BookKeyDecodingException 位于 ***.shared.exception 包中,可序列化。
在客户端,我的演示者将使用我的 resourceDelegate :
package ***.client.application.book;
public class BookPresenter {
...
private void fetch() {
clearSlot(SLOT_BOOK);
try {
bookDelegate.withCallback(new AsyncCallback<BookDTO>() {
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated catch block
**???**
}
@Override
public void onSuccess(BookDTO result) {
for (CahierDTO cahier : result.getPages()) {
...
}
}
}).getBook(bookKey);
} catch (BookKeyDecodingException e) {
**???**
}
}
}
我还在想:
- 它会落入 catch 子句吗?
- 到 onFailure() 方法?
- 这些都没有?
- 我想管理错误状态和一些 服务器端的异常序列化还是这一切都是魔法?
【问题讨论】:
-
附录:使用此配置,异常属于具有通用异常的 onFailure() 方法,而不是 BookKeyDecodingException 一个...
标签: java rest gwt exception-handling gwtp