Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于异常类名引发异常_Java_Exception_Middleware - Fatal编程技术网

Java 基于异常类名引发异常

Java 基于异常类名引发异常,java,exception,middleware,Java,Exception,Middleware,我正在用Java实现一个面向对象的中间件。调用远程调用时,我将得到一个响应字符串,其中包含值描述或异常描述(异常类名和消息)。我现在如何在客户端存根代码中抛出相应的异常,而只知道类名(和消息) 好吧,多亏了反射的暗示,我才明白。结果如下所示: RuntimeException ex = (RuntimeException) Class.forName(exceptionName).getConstructor(String.class).newInstance(exceptionMessage)

我正在用Java实现一个面向对象的中间件。调用远程调用时,我将得到一个响应字符串,其中包含值描述或异常描述(异常类名和消息)。我现在如何在客户端存根代码中抛出相应的异常,而只知道类名(和消息)

好吧,多亏了反射的暗示,我才明白。结果如下所示:

RuntimeException ex = (RuntimeException) Class.forName(exceptionName).getConstructor(String.class).newInstance(exceptionMessage);
throw ex;

exceptionName
必须是异常的完全限定类名

使用正则表达式识别类(
Pattern.compile()
)和错误消息,然后使用反射通过将消息作为参数传递来调用类的构造函数(
constructor.newInstance()
)。这样创建异常实例不是一个好主意。如果该类不存在或不支持您期望的构造函数,该怎么办?相反,让中间件抛出在该上下文中有意义的自己的异常。。。所以我不能抛出自定义异常。关于第一条评论:我已经知道类名和类型。您能否通过使用反射API进一步解释构造函数调用?