「java程序抛出异常」java 异常抛出

博主:adminadmin 2022-12-28 00:21:09 71

今天给各位分享java程序抛出异常的知识,其中也会对java 异常抛出进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java中 方法中抛出异常处理方法

Java语言提供两种异常处理机制:捕获异常和声明抛弃异常。

1、捕获异常:

(1)在Java程序运行过程中系统得到一个异常对象是,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。

(2)找到能够处理这种类型异常的方法后,运行时系统把当前异常交给这个方法处理;如果找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。

(3)捕获异常是通过try-catch-finally语句实现的。语法为:

try{

...

}catch(ExceptionName1 e){

...

}catch(ExceptionName2 e){

...

}

...

}finally{

...

}

2、声明抛弃异常:

(1)当Java程序运行时系统得到一个异常对象时,如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛弃异常。

(2)声明抛弃异常是在一个方法声明中的throws子句中指明的。如:

public int read() throws IOException{

...

}

其中throws IOException就是声明抛弃异常,throws后可以跟多个异常类型。

扩展资料:

程序设计语言的异常机制:

1、多数语言的异常机制的语法是类似的:用throw或raise抛出一个异常对象(Java或C++等)或一个特殊可扩展的枚举类型的值(如Ada语言);

2、异常处理代码的作用范围用标记子句(try或begin开始的语言作用域)标示其起始,以第一个异常处理子句(catch, except, resuce等)标示其结束;可连续出现若干个异常处理子句,每个处理特定类型的异常。

3、某些语言允许else子句,用于无异常出现的情况。更多见的是finally, ensure子句,无论是否出现异常它都将执行,用于释放异常处理所需的一些资源。

(1)C++异常处理是资源获取即初始化(Resource-Acquisition-Is-Initialization)的基础。

(2)C语言一般认为是不支持异常处理的。Perl语言可选择支持结构化异常处理(structured exception handling)。

(3)Python语言对异常处理机制是非常普遍深入的,所以想写出不含try, except的程序非常困难。

参考资料来源:

百度百科-异常处理

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

首先如果抛出jdk已有的异常,比如说抛出一个空指针异常,就这样:

throw new NullPointerException();这算抛出了一个空指针异常

throw new NullPointerException(“也可以在这里加一些异常信息描述”);

然后如果你想抛出一个自己定义好的异常,那么首先要声明一个异常类,

然后抛出的方法一样。

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程序中显示抛出异常的操作(throw语句)都是由athrow指令来实现的。

除了使用throw语句显示抛出异常情况之外, JVM规范还规定了许多运行时异常会在其他Java虚拟机指令检测到异常状况时自动抛出。 例如,在之前介绍的整数运算时,当除数为零时,虚拟机会在idiv或ldiv指令中抛出ArithmeticException异常。

正常情况下,操作数栈的压入弹出都是一条条指令完成的。唯一的例外情况是在 在抛异常时,Java虚拟机会清除操作数栈上的所有内容,而后将异常实例压入调用者操作数栈上。

java提供给程序主动抛出异常的语句

直接throws Exception 写在你的方法或者类名后

或者用try catch

在 Java 应用程序中,异常处理机制为:抛出异常,捕捉异常。

抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。

捕获异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器(exception handler)。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适 的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适 的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。

对于运行时异常、错误或可查异常,Java技术所要求的异常处理方式有所不同。

由于运行时异常的不可查性,为了更合理、更容易地实现应用程序,Java规定,运行时异常将由Java运行时系统自动抛出,允许应用程序忽略运行时异常。

对于方法运行中可能出现的Error,当运行方法不欲捕捉时,Java允许该方法不做任何抛出声明。因为,大多数Error异常属于永远不能被允许发生的状况,也属于合理的应用程序不该捕捉的异常。

java程序抛出异常的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 异常抛出、java程序抛出异常的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。