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

java抛出异常

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

创新互联专注于阜平企业网站建设,成都响应式网站建设公司,电子商务商城网站建设。阜平网站建设公司,为阜平等地区提供建站服务。全流程按需网站开发,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

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类型构造器,有参构造调用父类有参构造。

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如何抛出异常?

如果你知道你写的某个函数有可能抛出异常,而你又不想在这个函数中对异常进行处理,只是想把它抛出去让调用这个函数的上级调用函数进行处理,那么有两种方式可供选择:\x0d\x0a\x0d\x0a第一种方式:直接在函数头中throws SomeException,函数体中不需要try/catch。比如将最开始的例子中的testEx2改为下面的方式,那么testEx1就能捕捉到testEx2抛出的异常了。\x0d\x0a boolean testEx2() throws Exception{\x0d\x0a boolean ret = true;\x0d\x0a int b=12;\x0d\x0a int c;\x0d\x0a for (int i=2;i=-2;i--){\x0d\x0a c=b/i;\x0d\x0a System.out.println("i="+i);\x0d\x0a }\x0d\x0a return true; \x0d\x0a}\x0d\x0a第二种方式:使用try/catch,在catch中进行一定的处理之后(如果有必要的话)抛出某种异常。例如上面的testEx2改为下面的方式,testEx1也能捕获到它抛出的异常:\x0d\x0a boolean testEx2() throws Exception{\x0d\x0a boolean ret = true;\x0d\x0a try{\x0d\x0a int b=12;\x0d\x0a int c;\x0d\x0a for (int i=2;i=-2;i--){\x0d\x0a c=b/i;\x0d\x0a System.out.println("i="+i);\x0d\x0a }\x0d\x0a return true;\x0d\x0a }catch (Exception e){\x0d\x0a System.out.println("testEx2, catch exception");\x0d\x0a Throw e;\x0d\x0a }\x0d\x0a }\x0d\x0a第三种方法:使用try/catch/finally,在catch中进行一定的处理之后(如果有必要的话)抛出某种异常。例如上面的testEx2改为下面的方式,testEx1也能捕获到它抛出的异常:\x0d\x0a boolean testEx2() throws Exception{\x0d\x0a boolean ret = true;\x0d\x0a try{\x0d\x0a int b=12;\x0d\x0a int c;\x0d\x0a for (int i=2;i=-2;i--){\x0d\x0a c=b/i;\x0d\x0a System.out.println("i="+i);\x0d\x0a throw new Exception("aaa");\x0d\x0a }\x0d\x0a return true;\x0d\x0a }catch (java.lang.ArithmeticException e){\x0d\x0a System.out.println("testEx2, catch exception");\x0d\x0a ret = false;\x0d\x0a throw new Exception("aaa");\x0d\x0a }finally{\x0d\x0a System.out.println("testEx2, finally; return value="+ret);\x0d\x0a }\x0d\x0a\x0d\x0a}


当前题目:java代码抛出异常 java异常的抛出捕获并处理
分享URL:http://hbruida.cn/article/ddjjioj.html