论坛首页 Java企业应用论坛

验证String是不是整数,用异常作判断怎么了!(续)

浏览 3595 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2010-12-31   最后修改:2010-12-31
之前的贴子的地址:
http://www.iteye.com/topic/856221?page=4#1826917

看看common-lang的StringUtils中的实现,优秀的代码大家应该没什么意见
Java代码

   1. public static boolean isNumeric(String str) { 
   2.        if (str == null) { 
   3.            return false; 
   4.        } 
   5.        int sz = str.length(); 
   6.        for (int i = 0; i < sz; i++) { 
   7.            if (Character.isDigit(str.charAt(i)) == false) { 
   8.                return false; 
   9.            } 
  10.        } 
  11.        return true; 
  12.    } 

public static boolean isNumeric(String str) {
        if (str == null) {
            return false;
        }
        int sz = str.length();
        for (int i = 0; i < sz; i++) {
            if (Character.isDigit(str.charAt(i)) == false) {
                return false;
            }
        }
        return true;
    }


Integer中的public static int parseInt(String s, int radix)只是包含了大量的检测代码,然后实现和上面代码雷同,个人认为能捕获的异常一定要捕(非RuntimeException),能够用正常代码处理的就不要使用异常,不然既会影响性能,又不符合异常机制的设计初衷


我想说:

你看看jdk 1.5 中的 swing 中的 JComponent类的源代码第4850行到4863行如下:

try {
        Graphics pcg = paintingComponent.getGraphics();
g = (pcg == null) ? null : pcg.create();
pcg.dispose();
    } catch(NullPointerException e) {
g = null;
e.printStackTrace();
    }

  if (g == null) {
System.err.println("In paintImmediately null graphics");
return;
    }


    try {
        boolean paintCompleted = false;
        if (hasBuffer) {
    paintCompleted = paintDoubleBuffered(paintingComponent, bufferedComponent, g,
      paintImmediatelyClip.x,


看到红色的代码没有。

那么,当有人信奉不能用异常做判断的人看到Sun的这样的代码,你难到要找Sun的设计打架去...
也许你可以问他:“你是不是没看过<<Effective Java>>”呀?
我只是花了二分钟就找到了这样的代码...

我要说明的是:用异常做判断是可以的...

我只写到这,不会再写下去了。
   发表时间:2010-12-31   最后修改:2010-12-31
sun写的垃圾代码多了去了

不过这段代码是为了防御脑残程序员写的.......
要多么的脑残的测试代码才能触发这行红色的代码呢?
不说你的主类build好了里面的g是空的也说的过去
但create方法能返回空.......怎么样混乱的继承体系啊
0 请登录后投票
   发表时间:2010-12-31  
一味的信奉神,神也有马失前蹄的时候
1 请登录后投票
   发表时间:2010-12-31   最后修改:2010-12-31
其实我不明白楼主想要表达什么
if (g == null) {
System.err.println("In paintImmediately null graphics");
return;
    }

哪有问题了?
有本事你从JDK里找一个用异常验证string是不是数字的方法。
有时候,说话,沟通也是一种学问。

先不投隐藏,看看你能蹦多高。
0 请登录后投票
   发表时间:2010-12-31  
犯规的有两种:一是不懂规则,二是精通规则.

0 请登录后投票
   发表时间:2010-12-31  
楼主的精神是可嘉的,但是又一次看到被投隐藏~~~~~
貌似我积分不够,还不知道如何投隐藏~~~~~~~
0 请登录后投票
   发表时间:2010-12-31  
try {
        Graphics pcg = paintingComponent.getGraphics();
        g = (pcg == null) ? null : pcg.create();
        pcg.dispose();
    } catch(NullPointerException e) {
        g = null;
        e.printStackTrace();
    }

  if (g == null) {
      System.err.println("In paintImmediately null graphics");
      return;
    } 


这地方的异常用法跟你的根本不靠边呀!

因为这地方的NullPointerException并不是为了得到“In paintImmediately null graphics”而用的
g = (pcg == null) ? null : pcg.create();
pcg.dispose();
这地方的异常时为了捕获它的,为了防止出现pcg为null的情况.
0 请登录后投票
   发表时间:2010-12-31  
楼主是个有思想的,我就是来看楼主骂街的,骂倒人云亦云,迷信权威之徒。
0 请登录后投票
   发表时间:2010-12-31   最后修改:2010-12-31
以sun的一段LJ代码来为自己开脱感觉有点......

如果你当个小公务员了,你不会说:“你看天朝xx都贪污了xx,我贪污xx怎么了?”

权威不是标准,标准不是权威,在合适的地方用合适的方式做合适的事,仅此而已。

0 请登录后投票
   发表时间:2010-12-31  
反正我的原则就是不迷信
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics