Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
287 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 Reply

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...