`
zenius
  • 浏览: 55843 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Exception Handle

阅读更多
import org.springframework.webflow.engine.RequestControlContext;
import org.springframework.webflow.engine.support.TransitionExecutingFlowExecutionExceptionHandler;
import org.springframework.webflow.execution.FlowExecutionException;
import org.springframework.webflow.execution.RequestContext;

public class FlowExceptionHandler extends TransitionExecutingFlowExecutionExceptionHandler {

    public void handle(FlowExecutionException exception, RequestControlContext context) {
        super.handle(exception, context);
        exception.printStackTrace();
    }
 
    protected void exposeException(RequestContext context, FlowExecutionException exception, Throwable rootCause) {
        // note that all Throwables are Serializable so putting them in flash
        // scope should not be a problem
        context.getFlashScope().put(FLOW_EXECUTION_EXCEPTION_ATTRIBUTE, exception);
        context.getFlashScope().put(ROOT_CAUSE_EXCEPTION_ATTRIBUTE, rootCause);
        
        rootCause.printStackTrace();
    }
}

        context.getFlashScope().put(FLOW_EXECUTION_EXCEPTION_ATTRIBUTE, exception);
        context.getFlashScope().put(ROOT_CAUSE_EXCEPTION_ATTRIBUTE, rootCause);

        Exception e = (Exception) flowRequestContext.getFlashScope().get("rootCauseException");
        //e.printStackTrace(System.out);
        
        StackTraceElement[] stacktraces = e.getStackTrace();
        
        for (int i = 0; i < 4; i++) {
            StackTraceElement trace =  stacktraces[i];
            String className = trace.getClassName();
            String fieldName = trace.getFileName();
            String metodName = trace.getMethodName();
            int linenumber = trace.getLineNumber();
            System.out.println("========= trace: " + className + " " + fieldName  + " " + metodName  + " " + linenumber);
        }


    <action-state id="exceptionHandle">
        <evaluate expression="testBean.handleException(flowRequestContext)" />
        <transition on="exception" to="exception"/>
    </action-state>
    
    <exception-handler bean="flowExceptionHandler"/>


        if (testState instanceof ViewState) {
            ViewState viewState = (ViewState) testState;
            try {
            viewState.getViewFactory().getView(context).render();
            } catch (IOException e) {
            //Properly handle rendering errors here
            }
        }


package com.zenius.listener;

import java.util.LinkedList;

import org.springframework.webflow.definition.StateDefinition;
import org.springframework.webflow.engine.ViewState;
import org.springframework.webflow.execution.FlowExecutionListenerAdapter;
import org.springframework.webflow.execution.FlowSession;
import org.springframework.webflow.execution.RequestContext;

public class BackToLastViewStateFlowExecutionListener
    extends FlowExecutionListenerAdapter
{

    private String viewStatesName = "GLOBAL_BACK_LISTENER_VIEW_STATES";
    private String backEventId = "back";

    public void setViewStatesName(final String viewStatesName)
    {
        this.viewStatesName = viewStatesName;
    }

    public void setBackEventId(final String backEventId)
    {
        this.backEventId = backEventId;
    }

    @Override
    public void sessionStarted(final RequestContext context,
                               final FlowSession session)
    {
        session.getScope().put(viewStatesName, new LinkedList<String>());
    }

    private LinkedList<String> getViewStates(final RequestContext context)
    {
        @SuppressWarnings("unchecked")
        final LinkedList<String> viewStates =
            (LinkedList<String>)context.getFlowScope().get(viewStatesName);

        if (viewStates == null)
            throw new IllegalStateException("viewStates is null");

        return viewStates;
    }

    @Override
    public void stateEntered(final RequestContext context,
                             final StateDefinition previousState,
                             final StateDefinition state)
    {
        // If there's no previous ViewState, there's nothing we can do...
        if (!(previousState instanceof ViewState))
            return;

        // If we're entering the same state (due to a reload or
        // binding error), ignore that...
        if (previousState.getId().equals(state.getId()))
            return;

        final LinkedList<String> viewStates = getViewStates(context);

        final String previousStateId;

        if (context.getLastEvent().getId().equals(backEventId))
        {
            viewStates.removeLast();
            previousStateId = viewStates.isEmpty() ? "" : viewStates.getLast();
        }
        else
        {
            previousStateId = previousState.getId();
            viewStates.add(previousStateId);
        }

        context.getFlowScope().put("previousViewStateId", previousStateId);
    }

}



        String flowId = exception.getFlowId();
        String stateId = exception.getStateId();
        Event currentEvent = context.getCurrentEvent();
        StateDefinition currentState = context.getCurrentState();
        TransitionDefinition currentTransition = context.getCurrentTransition();
        State originationgViewState = (State)context.getRequestScope().get("webflow.originatingViewState");
分享到:
评论

相关推荐

    PHP_THINKPHP_study9_判断是否Ajax提交和错误页面定制

    这个类需要继承ThinkPHP的`ExceptionHandle`接口并实现相应方法,例如`render()`,来返回自定义的错误页面内容: ```php namespace app\common\exception; use think\exception\Handle; use think\Response; ...

    SmsServerSource.rar_Delhi_delphi phone

    例如,Unit1可能包含主程序的入口点,fmSetting可能涉及设置界面的实现,Functions可能包含通用的辅助函数,ExceptionHandle则可能处理异常处理逻辑,而Unit3可能包含了其他特定功能。 3. Unit1.ddp、fmSetting.ddp...

    tp5之修改返回数据格式

    创建一个名为`ExceptionHandler`的类,继承自`think\ExceptionHandle`,并覆盖其`render()`方法,即可自定义异常返回的格式。 总的来说,ThinkPHP5提供了灵活的方式让我们根据项目需求调整返回数据的格式。无论是...

    RxJava和Retrofit2的统一处理单个请求示例详解

    callBack.onFailure(ExceptionHandle.handleException(throwable)); return null; } }) // 订阅并处理请求结果 .subscribe(new Subscriber&lt;BaseResponse&lt;T&gt;&gt;() { @Override public void onCompleted() {} ...

    mfc可视化计算器编程

    首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。还有用户消息,比如鼠标的单击,双击,...

    WCF分布式开发步步为赢.pdf

    #### 十五、错误契约(FaultContract)与异常处理(ExceptionHandle) 错误契约定义了服务抛出的错误类型,异常处理则确保服务稳定运行。 **错误契约与异常处理**: - **定义错误契约**:使用`[FaultContract]`属性...

    小工具之崩溃模拟工具

    例如:搜狗浏览器开发的过程中,加入了Exceptionhandle的处理机制  在功能测试的过程中,我们可能会有一类这样的测试需求:测试被测软件的异常处理模块,确保异常处理模块工作正常。例如:搜狗浏览器开发的过程中,...

    windbg sos帮助文档

    PrintException &lt;exceptionhandle&gt;` 打印异常的详细信息,包括堆栈跟踪等。 - **TraverseHeap**:遍历整个垃圾回收堆。 - **示例**:`!TraverseHeap` 遍历 GC 堆,可用于分析对象分布情况。 #### Examining code ...

    如何利用Retrofit+RxJava实现网络请求的异常处理

    首先,我们需要定义一个 ExceptionHandle 类,该类将负责捕获和处理异常。 ```java public class ExceptionHandle { private static final int UNAUTHORIZED = 401; private static final int FORBIDDEN = 403; ...

    异常日志捕获ExceptionLog

    `handleException`方法负责处理捕获到的异常,其中`saveExceptionToSdCard`将异常信息写入到SD卡的文件`exception.log`中。 需要注意的是,由于Android权限系统的变化,自Android 6.0(API级别23)起,写入外部存储...

    易语言ISAPI工具模块

    易语言ISAPI工具模块源码,ISAPI工具模块,Dll入口函数,GetFilterVersion,TerminateFilter,HttpFilterProc,DebugPrint,SetIsDebug,ExceptionHandle,信息框_,InitFilterVersion,InitFilterProc,GetEventType,...

    Oracle_存储过程exception异常处理大全及实例经典最终.docx

    -- code to handle second exception WHEN OTHERS THEN -- code to handle all other exceptions END; ``` 这里 `WHEN OTHERS THEN` 是必需的,用于处理所有未被捕获的异常。 #### 1.4 在 PL/SQL 中使用 SQLCODE...

    关于Unhandled event loop exception No more handles的两种解决方案

    ### 关于Unhandled event loop exception No more handles的两种解决方案 在使用Eclipse开发工具的过程中,有时会遇到一个较为棘刺的问题——出现“Unhandled event loop exception No more handles”的错误提示。...

    exception-lab-code.rar_ExceptionLab_The Handle_factorgit_lab11

    exception lab用于了解Add WM_LBUTTONDOWN message handle case statement so that when you click the left button of your mouse, the time now can be shown just at the position where you click happens.

    异常处理与MiniDump详解

    当年刚开始工作的时候,第一个工作就是学习breakpad的源代码,然后了解其原理,为公司写一个ExceptionHandle的库,以处理服务器及客户端的未处理异常(unhandleexception),并打下dump,以便事后分析,当年这个功能在...

    Laravel开发-laravel-exception-email-notification

    public function handle(EmailFailed $event) { // 获取异常信息 $exception = $event-&gt;exception; // 发送异常通知邮件 Mail::to('admin@example.com')-&gt;send(new ExceptionNotification($exception)); } }...

    让whoops帮我们告别ThinkPHP6的异常页面

    春节期间熟悉了TP6, 也写了一个TP6的博客程序,但系统的异常页面实在另外头疼,很多时候无法查看到是哪行代码出的...在/app/ExceptionHandle.php文件的render()方法中加入如下代码: // 添加自定义异常处理机制 if (EN

    C#中一种可调用的异常处理方法

    之前做异常处理时,感觉很麻烦,每个地方都要写try和catch,机缘巧合下看到一篇文章无需写try/catch,也能正常处理异常,介绍EntLib,比较复杂,然后想到写一个异常处理的函数ExceptionHandle,把需要处理的代码用...

    pve2-api-php-client:适用于PHP的Proxmox 2.0 API客户端

    相对简单的代码片段,仅在Proxmox的REST API之上提供了一个get / put / post / delete...# You can try/catch exception handle the constructor here if you want.$pve2 = new PVE2_API("hostname", "username", "re

Global site tag (gtag.js) - Google Analytics