也许我要从配置文件里取很多值,涉及到各种类型,或者是从别处取值,但也涉及到类型转换等需要异常处理的情况,这时我们发现,这里“异常处理”成了这类方法的一个“方面”,如果使用AOP的方法,应该对这类方法进行拦截,并进行统一的异常处理。
利用C#2.0,我们可以把这个拦截工作变得很简单。
第一步,让它支持异常处理:
我们来定义一个统一的方法,使它可以进行异常处理:
public T GetValue
{
try
{
return SomeMethod()
}
catch
{}
}
这里我们使用了C#2.0的泛型特性,使它可以返回任何类型的结果,并且带有编译时类型安全检查,不像C# 1.x那样,返回一个object,仍需要检查object的类型,特别是对于简单类型,如int,则免去了装箱过程。
但这个方法有个很明显的问题,就是当异常发生时,catch的部分并没有返回值,从而导致它编译不能通过。注意到当发生异常时应该返回一个缺省值,而缺省值和返回值的类型必然是相同的,所以可以为它添加一个参数作为缺省值:
第二步,添加缺省值:
public T GetValue
{
try
{
return SomeMethod()
}
catch
{
return defaultValue;
}
}
- 上一篇:ASP.NET服务器控件之控件状态
- 下一篇:设置页面buffer引出来的问题
- 相关新闻
- 用户评论
数据载入中,请稍后……
评论内容:不能超过100字,不需审核,请自觉遵守互联网相关政策法规。
- 推广服务
IT部落推荐阅读
·生活服务
·精彩图文
·赞助商链接
Rss订阅
