特别是在输出错误信息时,一般来说,不管是否是可预见的错误,毕竟都比正常流程要少的多,弄个ref,out,搞得每次都要传递这个参数,大多数是空的,为何不用抛出异常,我很费解?谁能解释下?
------解决方案--------------------
这是个人习惯,尤其是一起使用ado.net比较多的人
ado.net采用int做返回参数,-1自然表示有误,但错误是啥并没有明说
自然如果喜欢采用这种api规定做设计的人,在处理这套东西的时候,他就比较郁闷,所以他就只好自己在临时弄一个ref
ps:这一般都是临时加上去的,一般ref参数都在末尾是吧,why?因为大多数情况是开始就没考虑到,后来需要了临时加上了。如果你开始想到了,又何必如此呢??
比如ado还有lasterror可以查。如果开始就想到了你也一样可以,事先就在对象里放lasterror属性
------解决方案--------------------
得看看代码的都是什么人。如果像微软那样设计给所有人用的类库,那么就不能假定程序员有对指针、out、ref这样的按引用传递的理解,所以要避免。如果目标是中高级程序员,那么就不需要有这方面的顾虑。
------解决方案--------------------
不管用任何C语言的书入门,C都是这么用的,因为没有别的选择,相反,C程序员会觉得C异常机制极其丑陋,习惯了C的程序员对于任何绕圈子的行为都看不惯,包括C++对一些类型安全上的限制(C程序员会说,unsigned char和char内存上没有任何区别,C++却不能隐式转换char *和unsigned char*,每次都强转根本是脱裤子放屁)
C++的异常机制也是个半残,因为C++的标准库太贫乏了,其中有一半还是继承C的,根本不抛异常
所以不要随便喷别的语言,各种语言都有自己的价值观,在脚本语言看来,C#一样低级,一些脚本语言用户鄙视一切需要编译,或者有“类型”的语言