「java程序抛出异常」java 异常抛出
今天给各位分享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程序抛出异常的信息别忘了在本站进行查找喔。
发布于:2022-12-28,除非注明,否则均为
原创文章,转载请注明出处。