| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1259 人关注过本帖
标题:为了处理异常写了很垃圾的代码
只看楼主 加入收藏
可可熊
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:553
专家分:0
注 册:2007-6-15
收藏
 问题点数:0 回复次数:23 
为了处理异常写了很垃圾的代码
上的是实现只允许在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
Java
Rank: 1
等 级:新手上路
帖 子:718
专家分:0
注 册:2007-1-29
收藏
得分:0 
你干嘛抛异常又捕异常?

Java,My Love!
2007-07-03 23:20
神vLinux飘飘x
Rank: 2
等 级:新手上路
威 望:3
帖 子:436
专家分:0
注 册:2007-1-4
收藏
得分:0 

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

2007-07-03 23:33
可可熊
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: 2
等 级:新手上路
威 望:3
帖 子:632
专家分:5
注 册:2006-11-8
收藏
得分:0 
try {
exception();
} catch (InvalidateInputException e) {
這里就直接可以處理了。。;
}
如果是自定義的就直接Throws 異常。

做人要厚道,看帖要回帖!回帖是尊重,回帖是美德! 美德要发扬,我们要顶帖!顶帖是好事,千万莫灌水!
2007-07-04 08:54
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
你这代码完全可以不用异常啊

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

}

可惜不是你,陪我到最后
2007-07-04 09:07
食恶不色
Rank: 2
等 级:新手上路
威 望:3
帖 子:632
专家分:5
注 册:2006-11-8
收藏
得分:0 

for(char c:source) {
if(Character.isDigit(c)) {
super.insertString(offset,str,att);
}
else {
//個人認為拋一下異常比較好。我遇到類似的問題過,被客戶罵了。

}

[此贴子已经被作者于2007-7-4 9:26:48编辑过]


做人要厚道,看帖要回帖!回帖是尊重,回帖是美德! 美德要发扬,我们要顶帖!顶帖是好事,千万莫灌水!
2007-07-04 09:21
快速回复:为了处理异常写了很垃圾的代码
数据加载中...
 
   



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

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