Coldfusion, как получить имя функции и номер строки при сбое или ошибке приложения

я работаю над старым кодом coldfusion моей устаревшей системы, есть ли способ определить cfcatch в application.cfc и отловить все ошибки моего приложения с помощью

  • Имя функции

  • Имя запроса

  • Номер строки кода

  • Имя Шаблона

    Для быстрой отладки, а не для написания всего кода.

Разработчик приложения нигде не обнаружил ошибок в коде. Я вставил cfcatch в код в некоторых местах, но еще многое предстоит сделать, и из-за производства я не хочу изменять так много кода.

Я вставляю cfcatch в базу данных и отправляю электронное письмо команде разработчиков. потому что система находится в производстве.


person IBM    schedule 26.02.2016    source источник
comment
Как насчет добавления раздела onError в файл Application.cfc и отправки cfdump аргументов? help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/   -  person Jedihomer Townend    schedule 26.02.2016
comment
Начните с документации: Об обработке ошибок в ColdFusion . Он охватывает варианты обработки ошибок для Application.cfc/cfm.   -  person Leigh    schedule 26.02.2016


Ответы (1)


Вы можете использовать тег cferror или onError для направления всех ошибок на заданную страницу/функцию.

Если вы используете cferror, исключение будет передано в переменной error. Если вы используете OnError, это параметр.

Чтобы помочь вам в этом, мои собственные электронные письма об ошибках включают следующее. Вы заметите, что у нас есть специальная обработка, чтобы помочь указать места, где пробел мог быть передан в целочисленное поле sql, что происходит чаще, чем я хотел бы признать.

An error occurred: http://#cgi.server_name##cgi.script_name#?#cgi.query_string#<br />
Time: #dateFormat(now(), "short")# #timeFormat(now(), "short")#<br />

<!--- Smarter error catching for form fields --->   
<cfif (error.message contains "Invalid data '' for CFSQLTYPE CF_SQL_INTEGER") and isdefined("form")>
    <!--- This stores a list of the Id fields --->
    <cfloop collection="#form#" item="thisField">
        <!--- Get the last two characters of the field name --->
        <cfset lastTwoChars = right(thisField, 2)>
        <!--- Get the value of the field --->
        <cfset thisFieldValue = evaluate('form.#thisField#')>
        <!--- Check to see if this is an Id field and if it's value is blank. --->
        <cfif lastTwoChars eq 'Id' and thisFieldValue eq ''>
            <h3 style="font-weight: bold; color: red">#thisField# is blank and it's possibly an integer field.</h3>
        </cfif>
    </cfloop>
</cfif>

<cfdump var="#error#" label="Error">


<br/>
<cfdump var="#form#" label="Form">
<br/>
<cfdump var="#url#" label="URL">
<br/>
<cfdump var="#session#" label="session">
person Tim Jasko    schedule 26.02.2016
comment
Помимо исключения, я нахожу полезную информацию в области cgi. - person Dan Bracuk; 26.02.2016
comment
Спасибо, Дэн, я добавил пример того, что мне было полезно сбросить. - person Tim Jasko; 26.02.2016