| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1259 人关注过本帖
标题:为了处理异常写了很垃圾的代码
取消只看楼主 加入收藏
可可熊
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:553
专家分:0
注 册:2007-6-15
收藏
 问题点数:0 回复次数:10 
为了处理异常写了很垃圾的代码
上的是实现只允许在JTextField中输入数字,当输入非数字时抛出自定义异常。InvalidateInputException
但由于BadLocationException异常也要在insertString方法中处理,不知道怎么同时处理这两个异常,就写出了下面的垃圾代码,JAVA的异常处理真让人郁闷。不知道哪位大哥能帮忙改改。


import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;

public class numfield
{
public static void main(String[] args) throws InvalidateInputException {
JFrame frame = new JFrame();
frame.setTitle("NumOnlyField");
frame.setSize(120,80);

JPanel panel = new JPanel();
frame.add(panel);
JTextField numonly = new JTextField(new NumberField(),"",10);
panel.add(numonly);
frame.setVisible(true);
}
}

class NumberField extends PlainDocument {

public void insertString (int offset,String str,AttributeSet att) throws BadLocationException {
char[] source = str.toCharArray();
for(char c:source) {
if(Character.isDigit(c)) {
super.insertString(offset,str,att);
}
else {
try {
exception();
} catch (InvalidateInputException e) {
;
}

}
}
}
private void exception () throws InvalidateInputException {
InvalidateInputException e = new InvalidateInputException("NO");
throw e;
}
}

class InvalidateInputException extends Exception
{
public InvalidateInputException(String message) {
System.out.println(""+message);
}
}






搜索更多相关主题的帖子: 垃圾 代码 
2007-07-03 16:56
可可熊
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:553
专家分:0
注 册:2007-6-15
收藏
得分:0 
为了处理自定义异常专门用了exception方法。

2007-07-03 16:57
可可熊
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:553
专家分:0
注 册:2007-6-15
收藏
得分:0 
没人给个意见吗?
2007-07-03 23:11
可可熊
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:553
专家分:0
注 册:2007-6-15
收藏
得分:0 
QUOTE:
以下是引用Java在2007-7-3 23:20:26的发言:
你干嘛抛异常又捕异常?

不太明白你的意思,我对java的异常处理很是不理解。

2007-07-03 23:59
可可熊
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:553
专家分:0
注 册:2007-6-15
收藏
得分:0 
QUOTE:
以下是引用神vLinux飘飘x在2007-7-3 23:33:16的发言:

呵呵,明天下午要考试,不能回答了,帮你顶一下

我们也这两天考试,

2007-07-04 00:00
可可熊
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:553
专家分:0
注 册:2007-6-15
收藏
得分:0 
QUOTE:
以下是引用千里冰封在2007-7-4 9:07:59的发言:
你这代码完全可以不用异常啊

            for(char c:source) {
                           if(Character.isDigit(c)) {
                      super.insertString(offset,str,att);
                            }
                else {
                        //在这里做你想做的事,不抛异常也可以做啊

                        }

因为题目的要求是是输入非数字的时候抛出异常的.

2007-07-04 10:25
可可熊
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:553
专家分:0
注 册:2007-6-15
收藏
得分:0 
QUOTE:
以下是引用食恶不色在2007-7-4 10:37:31的发言:
catch (InvalidateInputException e) {
                       //這里就直接可以處理了。。不用自己在寫自定義異常了
                    }

 要求是抛出一个自定义异常:validataInputException

2007-07-04 14:06
可可熊
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:553
专家分:0
注 册:2007-6-15
收藏
得分:0 
java的异常处理真让人郁闷,设计的不好


2007-07-04 18:41
可可熊
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:553
专家分:0
注 册:2007-6-15
收藏
得分:0 
但我总觉得设计的不好,也许是我还没有真正的领悟到它的好处吧。
2007-07-04 21:08
可可熊
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:553
专家分:0
注 册:2007-6-15
收藏
得分:0 
QUOTE:
以下是引用system32在2007-7-5 13:47:23的发言:
呵呵,别乱评价某一门语言。

呵呵,还是我学的不精。 有空指教一下JAVA的异常处理。

2007-07-05 18:51
快速回复:为了处理异常写了很垃圾的代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013299 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved