我正在尝试在类中生成try catch方法,但我正面临这个错误消息,请帮我解决这个问题。 我的班级是
public string Countryadd(string country, string id)
{
try
{
string data="0";
string qry1 = "select Country from Country where Country='" + country + "'";//Checking weather txtcountry(Country Name) value is already exixst or not. If exist return 1 and not exists go to else condition
SqlDataReader dr = conn.query(qry1);
if (dr.Read())
{
return data = "1";
}
else//If Country Name Not Exists
{
string qry = "insert into Country values('" + id + "','" + country + "')";//Insertin data into database Table Country
conn.nonquery(qry);
}
}
catch (Exception Ex)
{
ShowPopUpMsg(Ex.Message);
}
return data;
}
答案 0 :(得分:5)
您需要在try
块之前添加数据定义:
string data="0";
try {
{}
括号定义变量的范围。
您只能访问该范围内的变量。
答案 1 :(得分:4)
由于您在尝试块中定义了data
变量,因此它似乎不在此块之外。它仅适用于try块和任何子范围。
您可以在 try-catch 块之外移动它的定义。
string data="0";
try
{
...
}
catch (Exception Ex)
{
ShowPopUpMsg(Ex.Message);
}
return data;
阅读:来自MSDN的3.7 Scopes (C#)
答案 2 :(得分:2)
data
目前在try
区块的范围内定义,您需要将其移到外面
string data = "0";
try
{
...
}
catch(NullReferenceException ex)
{
}
catch(SomethingRelatedToDataReaderException ex)
{
}
return data;
此外,您不应该真正尝试捕获Exception
,您应该尝试捕获特定类型的异常。这有助于避免掩盖问题并为您提供更多控制
答案 3 :(得分:2)
{ }
符号之间创建的所有变量都在符号本身的范围内。
如果您需要在其外部使用data
,请在尝试之前声明它。
string data = string.Empty; // or initialize the value to "0" if that's the default you want.
try
{
// Don't declare data here or it won't be visible outside the try block.
// You can set the "0" or whatever value you want here though.
...
}
catch (Exception Ex)
{
...
}
return data;
答案 4 :(得分:0)
变量data
的范围仅在Try / Catch块中,因为您已在其中定义。
尝试定义变量data
超出块。