From 3d2836f7a50276b74de26c42564d6bf90c4037cc Mon Sep 17 00:00:00 2001 From: "william.liangf" Date: Fri, 11 May 2012 02:05:59 +0000 Subject: [PATCH] =?UTF-8?q?DUBBO-377=20=E4=BF=AE=E6=94=B9=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@1724 1a56cb94-b969-4eaa-88fa-be21384802f2 --- .../java/com/alibaba/dubbo/rpc/filter/ExceptionFilter.java | 4 ++++ .../com/alibaba/dubbo/rpc/filter/ExceptionFilterTest.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/filter/ExceptionFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/filter/ExceptionFilter.java index 7787863f6..4401ab70c 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/filter/ExceptionFilter.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/filter/ExceptionFilter.java @@ -84,6 +84,10 @@ public class ExceptionFilter implements Filter { if (className.startsWith("java.") || className.startsWith("javax.")) { return result; } + // 是Dubbo本身的异常,直接抛出 + if (exception instanceof RpcException) { + return result; + } // 否则,包装成RuntimeException抛给客户端 return new RpcResult(new RuntimeException(StringUtils.toString(exception))); } catch (Throwable e) { diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/com/alibaba/dubbo/rpc/filter/ExceptionFilterTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/com/alibaba/dubbo/rpc/filter/ExceptionFilterTest.java index 8645d535e..3c93a80ea 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/test/java/com/alibaba/dubbo/rpc/filter/ExceptionFilterTest.java +++ b/dubbo-rpc/dubbo-rpc-api/src/test/java/com/alibaba/dubbo/rpc/filter/ExceptionFilterTest.java @@ -38,7 +38,7 @@ public class ExceptionFilterTest { public void testRpcException() { Logger logger = EasyMock.createMock(Logger.class); RpcException exception = new RpcException("TestRpcException"); - logger.error(EasyMock.eq("Got unchecked and undeclare service " + DemoService.class.getName() + " method sayHello invoke exception: TestRpcException"), EasyMock.eq(exception)); + logger.error(EasyMock.eq("Got unchecked and undeclared exception. service: " + DemoService.class.getName() + ", method: sayHello, exception: " + RpcException.class.getName() + ": TestRpcException"), EasyMock.eq(exception)); ExceptionFilter exceptionFilter = new ExceptionFilter(logger); RpcInvocation invocation = new RpcInvocation("sayHello", new Class[]{String.class}, new Object[]{"world"}); Invoker invoker = EasyMock.createMock(Invoker.class); -- GitLab