IrishChieftain
IrishChieftain

Reputation: 15253

Error Handling in Web Form

I'm trying to cater for an error in my data access layer, which would return an int of value -1. See below:

protected void FolderBtn_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        try
        {
            DocsDALC dalc = new DocsDALC();

            // Updating two tables here - Folders and FolderAccess tables 
            // - as an ADO.NET transaction
            int folderID = dalc.CreateFolder(...);

            if (folderID > 0)
            {
                Response.Redirect(Request.Url.ToString(), false); 
                // Re-construct this to include newly-created folderID 
            }
            else
            {
                // How do I throw error from here?
            }
        }
        catch (Exception ex)
        {
            HandleErrors(ex);
        }
    }
}

If data layer returns -1, how can I throw an error from within the try block?

Upvotes: 0

Views: 27

Answers (1)

Brian Mains
Brian Mains

Reputation: 50728

As simply as the following - however, since you are catching errors, if you know it's a problem, it would be better to call an overload of HandleErrors method that you could pass in a string defining the problem, rather than throw the exception (which is costly for what this will do).

If you still want to throw the exception:

        if (folderID > 0)
        {
            Response.Redirect(Request.Url.ToString(), false); 
            // Re-construct this to include newly-created folderID 
        }
        else
        {
            throw new Exception("Database returned -1 from CreateFolder method");
        }

A possible alternative:

        if (folderID > 0)
        {
            Response.Redirect(Request.Url.ToString(), false); 
            // Re-construct this to include newly-created folderID 
        }
        else
        {
            HandleErrors("Database returned -1 from CreateFolder method");
        }

With of course an overloaded HandleErrors method.

Upvotes: 2

Related Questions