2

有没有更好的方法来处理异常?我可以做同样的事情,但只用一次 try catch 吗?

我需要创建自己的异常类吗?

try
{
   firstname = bd["firstname"].ToString();
}
catch (KeyNotFoundException fe)
{
   firstname = null;
}

try
{
   lastname = bd["lastname"].ToString();
}
catch (KeyNotFoundException fe)
{
   lastname = null;
}

try
{
   phone = bd["phone"].ToString();
}
catch (KeyNotFoundException fe)
{
   phone = null;
}

...
...
4

3 回答 3

5

如果可能,不要对正常的程序流程使用异常:

firstname = bd.ContainsKey("firstname") ? bd["firstname"] : null;
lastname = bd.ContainsKey("lastname") ? bd["lastname"] : null;
phone = bd.ContainsKey("phone") ? bd["phone"] : null; 

或(假设您正在访问 a Dictionary):

bd.TryGetValue("firstname", out firstname);
bd.TryGetValue("lastname", out lastname);
bd.TryGetValue("phone", out phone);
于 2013-07-18T09:36:20.933 回答
1

firstname = Convert.ToString(bd["firstname"]);

姓氏 = Convert.ToString(bd["姓氏"]);

phone = Convert.ToString(bd["phone"]);

尝试使用 .ToString() 的 Convert.ToString("string Value") 方法来避免异常。

于 2013-07-18T09:58:19.667 回答
0

如果您想以最小的开销使用 try catch 块,您可以在一个 try 块中编写所有代码并编写多个 catch 块。

try
{
   firstname = bd["firstname"].ToString();
   lastname = bd["lastname"].ToString();
   phone = bd["phone"].ToString();
}
catch (KeyNotFoundException fe)
{
   firstname = null;
}

catch (KeyNotFoundException ex)
{
   lastname = null;
}


catch (KeyNotFoundException xe)
{
   phone = null;
}
于 2013-07-18T09:37:54.510 回答