基本上,我正在创建一个 API。我有多个端点,作为 Controller 实现。如果调用端点,它会实例化一个解析器类,添加一些选项(如允许的参数等)。
但是现在:如果解析器失败,我希望它呈现一个很好的错误,其中包含指向实际失败的端点文档的链接。
我使用 b4j,它在 Java 之上运行,因此任何相关的 Java 代码都应该很容易转换。在 b4j 中,任何端点都类似于一个类。
例如 我有一个“getPOIByCity”端点。
如果用户调用该方法,需要提供城市参数。如果他/她省略了参数,我希望用户收到包含以下内容的错误:
1 required parameter missing: city
See the documentation: http://www.link.to/doc/getPOIByCity
我的第一个想法是进行某种堆栈跟踪以了解哪个类实例化了解析类,但我无法相信这是实现此目的的方法。
C# 具有稍微优雅一些的“来电者信息”属性。
关于如何做到这一点有什么见解吗?
最佳答案
正如另一个戴夫已经提到的,将异常委托(delegate)给调用类( Controller )并从那里显示错误会更有意义。
但是为了回答您的问题,您可以使用
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
String parentClass = stackTraceElements[2].getClassName();
Class cl = Class.forName(parentClass);
实现你想要的。
关于java - 知道什么类实例化了一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55992391/