java自定义异常抛出

Python020

java自定义异常抛出,第1张

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

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.getContentPane().add(btnj)

this.setSize(200,200)

rz.addItemListener(this)

rm.addItemListener(this)

btnj.addActionListener(this)

}

实现接口

public void actionPerformed(ActionEvent e) throws NumException{声明异常

if (Double.parseDouble(txt.getText())<=0){

throw new NumException()抛出异常

}

if (msg.equals("周长")){

txt.setText(""+(3.14*2*Double.parseDouble(txt.getText())))

}

if (msg.equals("面积")){

txt.setText(""+3.14*(Double.parseDouble(txt.getText())*Double.parseDouble(txt.getText())))

}

}

实现接口

public void itemStateChanged(ItemEvent e){

if (e.getSource()==rz){

msg="周长"

}

if (e.getSource()==rm){

msg="面积"

}

}

public static void main(String args[]){

try{

jisuanqi js=new jisuanqi()

js.setVisible(true)

}

catch(NumException ex){

System.out.println(ex)

}

}

}

编译时出现:

C:\Documents and Settings\Administrator\桌面\新建文件夹\jisaunqi.java:45: jisuanqi 中的 actionPerformed(java.awt.event.ActionEvent) 无法实现 java.awt.event.ActionListener 中的 actionPerformed(java.awt.event.ActionEvent);被覆盖的方法不抛出 NumException

解析:

这段代码有问题:

实现接口

public void actionPerformed(ActionEvent e) throws NumException{声明异常

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

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

抛出异常分为两种吧,一种是制造异常,一种是抛出可能发生的异常

throw关键字,抛出一个异常(即制造一个异常),用法 throw 异常 ,该异常必须为java.lang.Exception的子类,如果是RuntimeException子类的话,则不需要捕获或抛出异常。

throws关键字,抛出一个可能发生的异常,用在函数定义中,末尾处,以主函数为例子,public static void main(String[] args) throws 异常 该异常必须为Exception子类,常用于其子类,是这一个方法体执行中可能抛出(throw)的异常处理。如果不进行throws,也可以用try...catch语句进行捕获。

自定义异常,类一定(间接)继承java.lang.Exception类,当然,继承java.lang.RuntimeException就可以不用进行处理,下面举一个例子:

public class TestException extends Exception {

public TestException(String message) {

super(message)

}

public TestException() {}

}

一般自定义异常需要有2个构造函数,五参构造器和String类型构造器,有参构造调用父类有参构造。