Chi*_*han 4 c# refactoring try-catch
重构此代码的优雅方法是什么?
说,我有以下对象
public class SomeObject
{
public SomeInnerObject1 Cat { get; set; }
public SomeInnerObject2 Dog { get; set; }
public class SomeInnerObject1
{
public int Age { get; set; }
public string AgeAsString
{
get
{
if(Age < 0 )
throw new Exception();
return Age.ToString();
}
}
}
public class SomeInnerObject2
{
public string BirthDayString { get; set; }
public DateTime BirthDay { get { return DateTime.Parse(BirthDayString); } }
}
}
Run Code Online (Sandbox Code Playgroud)
并说,我必须设置一些我需要设置的文本框值
var obj = new SomeObject
{
Cat = new SomeObject.SomeInnerObject1 {Age = -1},
Dog = null
};
//These will pass but it looks ugly
try
{
textbox1.Text = obj.Dog.BirthDay.Month.ToString();
}
catch{ }
try
{
textbox2.Text = obj.Cat.AgeAsString;
}
catch { }
//These will fail
textbox1.Text = obj.Dog.BirthDay.Month.ToString();
textbox2.Text = obj.Cat.AgeAsString;
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
谢谢,
驰
当我真的不关心特定代码行会发生什么时,我会这样做:
ExecuteIgnoringExceptions(() => textBox.Text = Some.Possibly.Bad.Value);
void ExecuteIgnoringExceptions(Action a)
{
try
{
a.Invoke();
}
catch
{
}
}
Run Code Online (Sandbox Code Playgroud)