在获得特定值后停止执行

时间:2014-09-15 05:20:34

标签: c#

我在类名称InsertAndFetch:

中有类似FetchData(查询)的函数
public static FetchData(query)
{
    da = new SqlDataAdapter();
    dt = new DataTable();
    dt.Clear();
    Connectivity.openconnection();
    cmd = new SqlCommand(query, Connectivity.cn);
    cmd.CommandType = CommandType.Text;
    da.SelectCommand = cmd;

    try
    {
        da.Fill(dt);
    }
    catch (SqlException e2)
    {
        MessageBox.Show(e2.Message);
    }
}

从'SaleOrder'类中调用该函数。

InsertAndFetch.FetchData("Select CustName from Customer where CId='Cus_1'");
txtcustname.Text=InsertAndFetch.dt.Rows[0][0].ToString();

这里假设错误在查询中,该列是Typed CId而不是Actual列'CustId', 在FetchData的定义中,抛出SQLException,列'CId'不是有效列。

现在我希望控件应该在此异常之后停止执行(不应该退出应用程序)并且不要回到SaleOrder类中的函数调用,因为它将导致错误'索引0处没有行'将值赋给txtcustname。

4 个答案:

答案 0 :(得分:3)

您可以使用以下代码终止您的申请。

您可以将以下代码用于控制台应用程序: -

Environment.Exit(0);

您可以将以下代码用于WinForm应用程序: -

Application.Exit();

查看以下链接。

Application.Exit()方法的MSDN链接。

http://msdn.microsoft.com/en-us/library/ms157894%28v=vs.110%29.aspx

用于Environment.Exit(0)方法的MSDN链接。

msdn.microsoft.com/en-us/library/system.environment.exit(V = vs.110)的.aspx

它将为您提供详细说明。

答案 1 :(得分:2)

这是你想要的吗?

private bool canEnter=false;
private void TestFunc(int a)
{
    switch(a)
    {
         case(0):
         {
             Console.WriteLine("Zero");
             canExit=true;
             break;
         }
    }

    TestFunc(b);
    if(!canEnter)
    {
        HelloFunc(0);
        ThisFunc();
    }
}

答案 2 :(得分:1)

你想要做的是让函数在达到0时返回。就像这样:

private void TestFunc(int a)
{
    switch(a)
    {
        case(0):
        {
            Console.WriteLine("Zero");
            return;
        }
    }
}

而且你知道返回适合替换break: c# switch statement is return suitable to replace break

或者,如果您不想返回,则可以抛出异常,这将退出您的函数。您可以处理异常以便不执行任何操作:

try
{
    private void TestFunc(int a)
    {
        switch(a)
        {
            case(0):
            {
                Console.WriteLine("Zero");
                throw new NotImplementedException();
            }
        }
    }
}
catch (NotImplementedException e)
{
    //Just do nothing here
}

答案 3 :(得分:1)

您可以创建自己的例外

public class NewException : BaseException, ISerializable
{
    public NewException()
    {
        // Add implementation.
         // you can write code where you want to take your control after exception caught
    }
    public NewException(string message)
    {
        // Add implementation.
    }
}

并尝试在您的代码中使用它

 try
    {
        da.Fill(dt);
    }
    catch (NewException e2)
    {
       throw e2
    }

然后异常类函数执行