Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
274 views
in Technique[技术] by (71.8m points)

c# - how to throw an exception from a class back to the form that called it

Hello I have a regular WinForm that calls this:

private void childDirectoryToolStripMenuItem_Click(object sender, EventArgs e)
{
     try
     {
         SQL.createTable("childDirectory"); //THIS LINE
     }
     catch(SystemException ecp)
     {
         MessageBox.Show(string.Format("An error occurred: {0}", ecp.Message));
     }
}

and have a class named "SQL". The C# class cannot throw a messageBox to the user, only Console.WriteLine:

static public void createTable(string tableToCreate)
        {
            try
            {
                .
                .
                .
                .
            }
            catch (SqlException exp)
            {
                Console.WriteLine("Database not created: " + exp.Message, "Error");
            }
        }

How can I throw this SqlExecption back in the Form.cs call? Sorry if my wording is wrong, hopefully you can understand what I'm trying to do.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
    static public void createTable(string tableToCreate)
    {
        try
        {
            .
            .
            .
            .
        }
        catch (SqlException exp)
        {
            Console.WriteLine("Database not created: " + exp.Message, "Error");
            throw exp;
        }
    }

And catch it with:

 private void childDirectoryToolStripMenuItem_Click(object sender, EventArgs e)
 {
     try
     {
          SQL.createTable("childDirectory"); //THIS LINE
     }
     catch(SystemException ecp)
     {
        MessageBox.Show(string.Format("An error occurred: {0}", ecp.Message));
     }
     catch (SqlException exp)
     {               

     }
 }

But unless it is necessary you don't need to catch exception in called method if you catch it in calling method.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...