java抛出异常代码 java异常的抛出捕获并处理

java自定义异常抛出【java抛出异常代码 java异常的抛出捕获并处理】分类:电脑/网络程序设计其他编程语言
问题描述:
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中捕获或者在外面捕获
java提供给程序主动抛出异常的语句直接throws Exception 写在你的方法或者类名后
或者用try catch
在 Java 应用程序中 , 异常处理机制为:抛出异常,捕捉异常 。
抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息 。运行时系统负责寻找处置异常的代码并执行 。
捕获异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器(exception handler) 。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合 。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适 的异常处理器 。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行 。当运行时系统遍历调用栈而未找到合适 的异常处理器 , 则运行时系统终止 。同时,意味着Java程序的终止 。

推荐阅读