如何在ColdFusion中创建自定义异常

时间:2017-05-05 10:03:27

标签: exception coldfusion

以下是我的代码示例:

<cftry>

    <cfquery name="myquery" datasource="logindetails">
        INSERT INTO userdetails
        (FirstName,LastName,Email,Phonenumber,Country,Gender)
        VALUES
        ('#Form.firstname#','#Form.lastname#','#Form.emailID#',
        '#Form.PhoneNumber#','#Form.country#','#Form.gender#')
    </cfquery>
    <cfoutput>
        <b>Your Form has been registered</b>
    </cfoutput>

    <cfcatch type="database">
        <cfoutput>Email already exists. Try with a different email address</cfoutput>
    </cfcatch>

    <cfcatch type="any">
        <cfoutput>Sorry! some error occured.</cfoutput>
    </cfcatch>

</cftry>

我有两个不同的数据库异常,我想在数据库中显示这两个异常的不同消息,所以我问如何在ColdFusion中创建自定义异常?

2 个答案:

答案 0 :(得分:1)

ColdFusion中的自定义异常是使用<cfthrow>标记创建的。以下是关于该主题的众多文件之一:

https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-tags/tags-t/cfthrow.html

答案 1 :(得分:0)

我认为您在询问是否可以为cfquery抛出的两个不同的异常提供自定义消息(而不是可以使用cfthrow完成的自定义异常)

如果是这样,来自cfquery的任何错误可能都是类型数据库,因此您必须检查cfcatch中的消息并根据错误消息的内容更改消息,例如

<cftry>

    <cfquery name="myquery" datasource="logindetails">
        INSERT INTO userdetails
        (FirstName,LastName,Email,Phonenumber,Country,Gender)
        VALUES
        ('#Form.firstname#','#Form.lastname#','#Form.emailID#',
        '#Form.PhoneNumber#','#Form.country#','#Form.gender#')
    </cfquery>
    <cfoutput>
        <b>Your Form has been registered</b>
    </cfoutput>

    <cfcatch type="database">
        <cfoutput>#findNoCase("error message 1", cfcatch.message) ? "Email already exists. Try with a different email address" : "Some other error message"#</cfoutput>
    </cfcatch>

    <cfcatch type="any">
        <cfoutput>Sorry! some error occured.</cfoutput>
    </cfcatch>

</cftry>

根据db返回的错误,您可能需要检查多个属性,因此here是一个cfcatch属性列表