public override void Run(EPServiceProvider epService) { MyExceptionHandler.Contexts.Clear(); epService.EPAdministrator.Configuration.AddEventType <SupportBean>(); // test exception by graph source EPStatement stmtGraph = epService.EPAdministrator.CreateEPL("create dataflow MyDataFlow DefaultSupportSourceOp -> outstream<SupportBean> {}"); var op = new DefaultSupportSourceOp(new object[] { new EPRuntimeException("My-Exception-Is-Here") }); var options = new EPDataFlowInstantiationOptions(); options.OperatorProvider(new DefaultSupportGraphOpProvider(op)); var handler = new MyExceptionHandler(); options.ExceptionHandler(handler); EPDataFlowInstance df = epService.EPRuntime.DataFlowRuntime.Instantiate("MyDataFlow", options); df.Start(); Thread.Sleep(100); Assert.AreEqual(EPDataFlowState.COMPLETE, df.State); Assert.AreEqual(1, MyExceptionHandler.Contexts.Count); EPDataFlowExceptionContext context = MyExceptionHandler.Contexts[0]; Assert.AreEqual("MyDataFlow", context.DataFlowName); Assert.AreEqual("DefaultSupportSourceOp", context.OperatorName); Assert.AreEqual(0, context.OperatorNumber); Assert.AreEqual("DefaultSupportSourceOp#0() -> outstream<SupportBean>", context.OperatorPrettyPrint); Assert.AreEqual("Support-graph-source generated exception: My-Exception-Is-Here", context.Exception.Message); df.Cancel(); stmtGraph.Dispose(); MyExceptionHandler.Contexts.Clear(); // test exception by operator epService.EPAdministrator.Configuration.AddImport(typeof(MyExceptionOp)); epService.EPAdministrator.CreateEPL("create dataflow MyDataFlow DefaultSupportSourceOp -> outstream<SupportBean> {}" + "MyExceptionOp(outstream) {}"); var opTwo = new DefaultSupportSourceOp(new object[] { new SupportBean("E1", 1) }); var optionsTwo = new EPDataFlowInstantiationOptions(); optionsTwo.OperatorProvider(new DefaultSupportGraphOpProvider(opTwo)); var handlerTwo = new MyExceptionHandler(); optionsTwo.ExceptionHandler(handlerTwo); EPDataFlowInstance dfTwo = epService.EPRuntime.DataFlowRuntime.Instantiate("MyDataFlow", optionsTwo); dfTwo.Start(); Thread.Sleep(100); Assert.AreEqual(1, MyExceptionHandler.Contexts.Count); EPDataFlowExceptionContext contextTwo = MyExceptionHandler.Contexts[0]; Assert.AreEqual("MyDataFlow", contextTwo.DataFlowName); Assert.AreEqual("MyExceptionOp", contextTwo.OperatorName); Assert.AreEqual(1, contextTwo.OperatorNumber); Assert.AreEqual("MyExceptionOp#1(outstream)", contextTwo.OperatorPrettyPrint); Assert.AreEqual("Operator-thrown-exception", contextTwo.Exception.Message); }