java自定义异常抛出

来源:百度知道 编辑:UC知道 时间:2024/05/24 13:39:13
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

//自定义异常类
class NumException extends Exception{
public String toString(){
return "输入的值太小";
}
public String shuru(){
return "请输入数字";
}
}

//
class jisuanqi extends JFrame implements ActionListener,ItemListener{
JRadioButton rz;
JRadioButton rm;
ButtonGroup bg;
JTextField txt;
JButton btnj;
String msg;

jisuanqi(){
super("计算器");
rz=new JRadioButton("周长");
rm=new JRadioButton("面积");
bg=new ButtonGroup();
txt=new JTextField();
btnj=new JButton("计算");
msg="";
this.getContentPane().setLayout(new GridLayout(2,2));
bg.add(rz);
bg.add(rm);
this.getContentPane().add(rz);
this.getContentPane().add(rm);
this.getContentPane().add(txt);
this

这段代码有问题:

//实现接口
public void actionPerformed(ActionEvent e) throws NumException{//声明异常

public void actionPerformed(ActionEvent e)不应该抛出异常, ActionListener接口函数没有异常抛出

一种可能的解决方法是把判断移到另外一个函数中,然后抛出异常,在actionPerformed中捕获或者在外面捕获

这个问题相当明显,就是方法重载失败,子类方法与父类方法申明抛出的违例不对应,子类方法如果覆盖父类中的方法,其申明抛出的违例不能超出父类方法中申明抛出的违例,只能比它少。

同意楼上的说法,遇到过类似的问题,但是还真不知道是为什么,如果楼上的看到,请解释一下原理,谢谢.