Нечетное поведение ColdFusion - прерывание не выполнено - PullRequest
2 голосов
/ 05 августа 2011

Используя ColdFusion 9.01, иногда мы наблюдали проблему, когда в функции CFC может возникать ошибка и когда мы пытаемся добавить writeDump (foo);и прервать;вызовы для устранения ошибки ColdFusion не учитывает эти вызовы.

Пример:

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
        ,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;
}

Я считаю, что мы успешно устранили кеширование.Мне любопытно, если кто-то еще сталкивался с этим.

Спасибо.

Аарон

Ответы [ 3 ]

3 голосов
/ 05 августа 2011

Я предполагаю, что ошибка - это ошибка parse , а не истинная ошибка времени выполнения, поэтому она выдается до фактического выполнения функции.На самом деле он не пропускает ваши abort, просто не может проанализировать (или выполнить) все это.

Я не уверен, почему вы получаете ошибку разбора, но я знаю CFкод, который обрабатывает структурные литералы, несколько ненадежен.

2 голосов
/ 01 сентября 2011

Проблема заключалась в использовании литералов структуры, объявленных в вызовах аргументов функции.

0 голосов
/ 05 августа 2011

Я собираюсь выйти на конечность и сказать, что ваша проблема может быть как-то связана с этой ошибкой:

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

есть ли в вашем приложении что-то, чтовыполняется в методе onRequestEnd ()?

было бы полезно сообщить нам, что именно происходит, и / или вывод, который вы получаете, когда возникает проблема.

...