开发者

Odd ColdFusion Behavior--Abort Not Honored

Using ColdFusion 9.01, occasionally, we have observed an issue where an error may be occurring within a CFC function and when we attempt to add writeDump(foo); and abort; calls to debug the error ColdFusion does not honor those calls.

Example:

private void function index(Event)
{
    var rc = Event.getCollection();
    var prc = Event.getCollection(private=true);

    /** NOT HONORED! **/
    writeDump(var=rc);
    abort;

    prc.JSON = {};
    prc.JSON.show = variables.APIProxy.call(
         handler = 'shows'
        ,action = 'read'
        ,event = arguments.Event
        /** THE ERROR IS OCCURING HERE **/
        ,params = { language=lcase(rc.language.getLanguage_Medium()), show=rc.show_name }
    );
    prc.JSON.showEpisodes = variables.APIProxy.call(
         handler = 'episodes'
        ,action = 'index'
        ,event = arguments.Event
        ,params = { language=lcase(rc.language.getLanguage_Medium()), show=rc.show_name, detail=true }
    );
    prc.JSON.products = variables.APIProxy.call(
         handler = 'products'
        ,action = 'index'
        ,event = arguments.Event
        ,params = { language=lcase(rc.language.getLanguage_Medium()), detail=true }
    );
    Event.addAssets(
        'model/product.js
        ,model/show.js
        开发者_JS百科,collection/product_mobile.js
        ,collection/show_mobile.js
        ,view/product_mobile.js
        ,view/productList.js
        ,view/show_mobile.js
        ,view/showList.js
        ,model/episode.js
        ,view/episode_mobile.js
        ,view/episodeList.js
        ,collection/episode_mobile.js
        ,collection/product_mobile.js
        ,mobile/episodeObject.css
        ,mobile/show.js
        ,mobile/show.css
        ,mobile/category.css
    ');

    Event.setLayout('layout.mobile');
    Event.setView("show/index_mobile");

    return;
}

I believe we have successfully eliminated caching. I am curious if anyone else has encountered this.

Thank you.

Aaron


I'm guessing that the error is a parse error, not a true runtime error, so it gets thrown before the function actually executes. It's not actually skipping over your abort, it just fails to parse (or execute) the entire thing.

I'm not sure why you're getting a parse error there, but I do know the CF code that handles struct literals is somewhat flaky.


The issue was with the struct literals declared within the argument calls to a function.


i'm going to go out on a limb here and say that your issue might have something to do with this bug:

http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html#bugId=86960

is there anything in your app that executes in the onRequestEnd() method?

it would be helpful to tell us what exactly is happening and/or the output you're getting when the issue happens.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜