3层(项目):如何从第一层抛出异常并在第三层捕获它

本文关键字:抛出异常 三层 项目 3层 一层 | 更新日期: 2023-09-27 18:36:33

我有三层:

  1. 服务处理程序(与 ax2012 通信并将数据映射到实体)
  2. 服务(从 serviceHandlers 调用函数,如 getOrder 并返回它)
  3. Winform(或者可以是某人设计UI的任何内容,使用服务逻辑来执行此操作)。

我的问题是服务处理程序中的异常处理。我实现了我自己的异常可以EntityNotFound,当调用getEntity函数并且找不到任何内容时,我抛出了该异常。当我抓住它时,我所做的就是再次扔掉它并在服务中抓住它。

在 catch 块中,

我只使用语句 throw; .. 虽然我会再次将其扔回去,然后我将在 winform 层的 catch 语句中捕获。但是发生的情况是应用程序在服务层停止并说"EntityNotFoundException"未处理,这是OKAI,但我希望这种情况发生在wform层中。

希望这是可以理解的,所以..有什么建议吗?

3层(项目):如何从第一层抛出异常并在第三层捕获它

首先,除非你添加一些值,如日志记录,或者添加服装消息,否则不要捕获和重新抛出异常。你可以试试...捕获 GUI 层中的异常以在那里适当地处理它。

其次,示例代码将帮助您调试问题。