Substring(0,11)语句。当所截取字符串长度只有9的时候出错怎么办?

如题所述

一般情况下,string.substring(int start,int length)使用时,如果start+length > string.length时会抛出一个运行时错误,ArgumentOutOfRangeException就是一个参数越界的运行态错误。

不常用处理状态就是去捕获这个错误,从而使用进入到错误处理中。但是这种方案不是不可以,而是try...catch结构在没有出现错误时性能上还没有多大问题,而一旦进入错误处理的,因为这种抛出机制,使用程序块性能下降。

为了避这种下降,一般以情况先进行了判定。如果语句结构为:

if(string.length >11 ) return string.substring(0,11);
else return string;

也就是说在没有超出11位的情况下原样返回。

大多数程序员都是这种用法。事实上这种用法并不利用阅读,按程序理解,顺序结构还是比较适合阅读的习惯。所以多年经验的程序员会写成:

return string.substring(0,Math.Min(11,string.Length));

也就是说在一句代码中直接进行体现了!这种方法一般是有经验的人写时会这样写的,但是他照顾的是阅读习惯,性能上还略差于判断。
温馨提示:答案为网友推荐,仅供参考
相似回答