我的理解:在有返回值的函数内是否应该使用异常处理?欢迎大家斧正
2004-06-21 22:33
537 查看
先看两个函数:
public string StrTest()
{
try
{
//这里放有可能抛出异常的代码
return "string";
}
catch
{
//处理代码
}
return "";//当try块发生异常时,满足函数需要返回值得要求
}
public DataSet DsTest()
{
try
{
//这里放有可能抛出异常的代码
return DataSetObject;
}
catch
{
//处理代码
}
return new DataSet();//当try块发生异常时,满足函数需要返回值得要求
}
依次类推,可能会存在需要返回DataReader,boolean等的函数,那么调用这些函数的代码
至少会存在如下两个问题:
1,应用程序将会有很多判断冗余代码,而且这种判断也是“各有特色”的
2,以返回DataSet和DataReader为例,在数据库应用中,怎么判断DataSet是不包含任何值(数据)?
怎么判断是因为异常而使DataSet不包含数据,还是因为数据查询本身就没有任何数据?不能准确
判断这两种情况,程序就无法提供正确友好的处理结果界面
解决方案:在任何函数内中不使用任何异常处理,而在调用处进行异常处理
public string StrTest()
{
try
{
//这里放有可能抛出异常的代码
return "string";
}
catch
{
//处理代码
}
return "";//当try块发生异常时,满足函数需要返回值得要求
}
public DataSet DsTest()
{
try
{
//这里放有可能抛出异常的代码
return DataSetObject;
}
catch
{
//处理代码
}
return new DataSet();//当try块发生异常时,满足函数需要返回值得要求
}
依次类推,可能会存在需要返回DataReader,boolean等的函数,那么调用这些函数的代码
至少会存在如下两个问题:
1,应用程序将会有很多判断冗余代码,而且这种判断也是“各有特色”的
2,以返回DataSet和DataReader为例,在数据库应用中,怎么判断DataSet是不包含任何值(数据)?
怎么判断是因为异常而使DataSet不包含数据,还是因为数据查询本身就没有任何数据?不能准确
判断这两种情况,程序就无法提供正确友好的处理结果界面
解决方案:在任何函数内中不使用任何异常处理,而在调用处进行异常处理
相关文章推荐
- 函数返回值是否使用引用类型的问题:理解引用、返回值
- 函数返回值是否使用引用类型的问题:理解引用、返回值
- 函数返回值是否使用引用类型的问题:理解引用、返回值
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 大家看看这个参数inctype你是否使用过?我做了以下测试,欢迎拍砖!
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- C语言实现异常处理(使用 setjmp 和 longjmp 函数)
- 使用atexit函数进行异常处理
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 黑马程序员_学习日记37_601基础加强(enums_truct_类型转换_值类型与引用类型_异常处理_函数返回值)
- C++ 异常处理 terminate函数使用
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- C++ 异常处理 terminate函数使用