如果不是在一个非常大的循环中用到了,还不会感觉出我原来用的方法实在太慢了... 帖出来,以免再有同学犯我的错误
两种写法真的差了10倍的速度。至少///用于
原来的:
internal static object NumericFilter(object src) //字符串转化为数字,失败返回DBNull
{
try { return double.Parse(sql + ""); }
catch { return DBNull.Value; }
}现在的:
internal static object NumericFilter(object src) //字符串转化为数字,失败返回DBNull
{
double d;
if (double.TryParse(sql + "", out d)) return DBNull.Value;
return d;
}
两种写法真的差了10倍的速度。至少///用于
原来的:
internal static object NumericFilter(object src) //字符串转化为数字,失败返回DBNull
{
try { return double.Parse(sql + ""); }
catch { return DBNull.Value; }
}现在的:
internal static object NumericFilter(object src) //字符串转化为数字,失败返回DBNull
{
double d;
if (double.TryParse(sql + "", out d)) return DBNull.Value;
return d;
}
本人决不用,
但是领导指示非要我用try不可,说怕出错,唉,还是听领导的,不然没有money拿了//你是程序员吗?
譬如你提供给别人一个函数,按照常规,传入的参数类型和大小都应该是正确的.
这仅仅是应该而已,如果别人恶意调用你的函数(譬如WebService啥的)
你的函数必须有足够的健壮性来处理这些问题,有的地方该用就得用.
(我的意思不是必须用try来处理) 那些说决不用try的 .... 请问你的异常如何捕获呢???
#if Debug
try
{
#endif
.........
#if Debug
}
catch()
{
}
#endif
#if Debug
try
{
#endif
.........
#if Debug
}
catch()
{
}
#endif
请问 加入有这样的操作
1. 第一步解析传入的参数 ,该参数是一个xml格式字符串
2. 第二步执行打开数据库的操作
3. 第三步根据参数取数据当你执行第三步的时候 你敢保证第一步第二步都一定执行成功?
就拿解析xml参数来说,你敢保证你会把所有错误类型都处理了?
public bool IsNum(string val)
{
if (val== "" || val== null)
return false;
Regex r = new Regex("[^0-9]");
return !r.IsMatch(val);
}你的想法是用
public bool IsNum(string val)
{
try
{
int i =int.Parse(val);
}
catch
{
return false;
}
return true;
}这个有必要吗
{
try
{
if (val== "" || val== null)
return false;
Regex r = new Regex("[^0-9]");
return !r.IsMatch(val);
}
catch
{
return false;
}
}
就是少用 TRY`呢```哪个 效率 最低的```
一般 就 用 IF 就好了的呢`
try catch 是耗费资源的
单个的try/catch耗时可以忽略不计,比如判断用户在文本框里的输入,用parse和tryparse都是可以的,这种情况下,可读性是第一考虑的因素。只有在大量循环下,才要考虑到try的效率问题。
异常的处理
因为它检视的范围广 所以 也相对 消耗资源多.TryParse这样的 只是对于 特定类型的 特例
就消耗 相对来说 自然小了很多
runrunrun(做最好的自己) ( )请看:
hertcloud(·£孙子兵法£·)
如果程序员对代码有确定的判断的时候用IF吗?
在循环中尽量不要用try,但是单次操作还是建议使用,保证代码的健壮性
JAVA有很多这些讲效率的书,C#也有相同类型的书,买本书仔细看看
不会一点资源都不占
原来的:
internal static object NumericFilter(object src) //字符串转化为数字,失败返回DBNull
{
try { return double.Parse(sql + ""); }
catch { return DBNull.Value; }
}现在的:
internal static object NumericFilter(object src) //字符串转化为数字,失败返回DBNull
{
double d;
if (double.TryParse(sql + "", out d)) return DBNull.Value;
return d;
}try...catch...本来就耔资源,但也是出于安全性考虑.
按楼主这样,如果出现异常,就会有问题了.
如果要用改进的方式,最好把传入的值在外层进行安全检查来保证合法性.
鱼和熊掌啊.
先要了解什么是异常,什么是错误