Java 基于异常类名引发异常
我正在用Java实现一个面向对象的中间件。调用远程调用时,我将得到一个响应字符串,其中包含值描述或异常描述(异常类名和消息)。我现在如何在客户端存根代码中抛出相应的异常,而只知道类名(和消息) 好吧,多亏了反射的暗示,我才明白。结果如下所示:Java 基于异常类名引发异常,java,exception,middleware,Java,Exception,Middleware,我正在用Java实现一个面向对象的中间件。调用远程调用时,我将得到一个响应字符串,其中包含值描述或异常描述(异常类名和消息)。我现在如何在客户端存根代码中抛出相应的异常,而只知道类名(和消息) 好吧,多亏了反射的暗示,我才明白。结果如下所示: RuntimeException ex = (RuntimeException) Class.forName(exceptionName).getConstructor(String.class).newInstance(exceptionMessage)
RuntimeException ex = (RuntimeException) Class.forName(exceptionName).getConstructor(String.class).newInstance(exceptionMessage);
throw ex;
exceptionName
必须是异常的完全限定类名 使用正则表达式识别类(Pattern.compile()
)和错误消息,然后使用反射通过将消息作为参数传递来调用类的构造函数(constructor.newInstance()
)。这样创建异常实例不是一个好主意。如果该类不存在或不支持您期望的构造函数,该怎么办?相反,让中间件抛出在该上下文中有意义的自己的异常。。。所以我不能抛出自定义异常。关于第一条评论:我已经知道类名和类型。您能否通过使用反射API进一步解释构造函数调用?