我在类名称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。
答案 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
}
然后异常类函数执行