java - 知道什么类实例化了一个类

标签 java stack-trace

基本上,我正在创建一个 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/

相关文章:

java - 通过方法 'setDelegate'参数0表示的不满足的依赖关系;我能做些什么?

java - 如何解决 ClassNotFoundException?

tomcat - 实时获取 J2EE Http 请求的堆栈跟踪

debugging - 我如何使用MiniDumpWriteDump获得有意义的堆栈跟踪

java.lang.reflect.代理 : Huge exception stack trace

java - 有没有办法存储 Eclipse 的完整配置,这样就不需要进一步的配置了?

java - 如何将 new Date(0L) 正确转换为 LocalDate (1970-01-01)?

java - 是Throwable类的printStackTrace(),异步

java - 获取远程url的文件大小,无需在Google应用程序引擎中下载(php)

android - 新的 Google 开发者控制台崩溃堆栈跟踪不再准确