java抛异常
A. java异常的抛出
这几个异常的理解我简单说下:卜雹
public class TestException extends Exception 这个不用管,只是自定义一个异常而已枣则(这种定义在开发中经常用到,因为java本身的异常经常不能更明确开发者的意图)
class B中的第2行的method2抛出TestException异常,表示如果有谁调用method2方法,将有可能抛出TestException异常,所以调用method2方法的代码块要用try catch包起来,并捕获TestException异常(当然有另一种可能可以不捕获TestException异常,但此代码块所在的方法必须将此异常向外传递,也就是继续throws TestException)
在class A中,因为Method1方法中调用了B的method2方法,所以它catch了TestException异常(上面我还提到了另一种处理方法),而在捕获到的异常处理代码内,class A使用了产生另一种异常的方式将异常向外传递(类A第8行),而外部没有处理RuntimeException,所以此程序执行到抛出此异常后的代码将被中断(假型岩帆设后面还有代码),RuntimeException将会被打印到屏幕上
B. java查不到数据抛异常会怎么样
java 捕获和抛出异常
异常通常是程序运行时出现的问题和错误。如:客户输入数据的格式,读取的文件是否存在,网络是否保持通畅等。java程序在执行过蚂顷程中发生的异常事件分为:异常和错误
异常:(Exception)
异常指程序运行过程中出现的非正常现象。可能遇到的轻微错误,可以写代码处理异常并继续继承执行,不应让程序中断。
错误:(Error)
错误事件的发生通常会阻止程序正常运行。对于java虚拟机无法解决的严重问题,如jvm系统内部错误,资源耗尽等情况,一般不编写针对性的代码进行处理。
对于被认为是不能恢复的严重错误,不应该抛出,而应该让程序中断。
错误与异常最大的区别是错误往往比异常严重,发生了错误,一般不能在应用程序中捕获处理,程序只能非正常终止运行。
异常的简单分类:
(1):检查性异常
最具有代表性的是用户错误或者是问题引起的而异常,这是程序员无法闷辩陆预见的。例如要打开一个不存在的文件时,异常就发生了,这些异常在编译时不能被简单的忽略。
(2):运行时异常
它是可能被程序员避免的异常,与检查性异常相反,运行时可以在编译时被忽略。
(3):错误
错误不是异常,而是脱离程序员控制的问题,错误在代码中通常被忽略。例如当栈溢出时,一个错误就发生了,灶燃他们在编译中也查不到。
java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类
C. java中怎么抛异常和接收异常
抛出异常 就是使用 throw关键字 除了抛出常见的默认异常外,主要是用于抛出自定义异常,关于自定义异常就是继承了Exception类的子类接受异常是指捕获异常吗,似乎没有听说过接受异常这种说法,捕获异常的话主要是用 try{} catch(){} finally{} 结构try {}数据块中 是预期可能出现异常的代码catch 的 attribute 是指定希望捕获的异常,比如catch(NullPointerException e )就是只测试并捕获空指针异常,再如catch(Exception e) 就可以捕获所有继承了Exception的子类,{}则是捕获该异常后的处理代码,比如输出错误信息,etc 实际应用中可以有多个catch 用来区分不同的异常然后运行不同的代码进行处理finally{}则是无论是否捕获异常,该代码都会执行 希望对你有帮助
D. JAVA如何抛出异常
首先如果抛出jdk已简物有的异常,比如说抛出一个空指针异常,就这样:
throw new NullPointerException();这算抛出了一拦陆液个空指针异常
throw new NullPointerException(“也可以在这里加一些异常信息描述”);
然后如果你想抛出一个自己定义好的异常,那么首先要声明一个异常类,
然后抛出的方法一样。悉缓
E. 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中捕获或者在外面捕获
F. Java抛异常是什么意思
所谓异常,就是在程序的功能里面涉及到一些你不打算做的工作或者你没办法控制的情况,但是又不能不处理
比如,现在写一个读配置文件的程序,读出配置文件的数据给另外一个程序用。在程序的用户的电脑上,这个配侍租置文件是不是存在,你没法控制,你又不打算附带做一个生成这个配置文件的功能。那么如果碰到它不存在李兄的情况,这就是个异常。
抛异常,就是写一个功能处理这老扰兆个异常,然后把出现异常的那个代码点转到你的异常处理程序那边去。
G. 常见的java异常有哪些都是什么意思
1、ArithmeticException - 算术运算中,被0除或模除。
2、 - 数组越界访问。
3、ArrayStoreException - 数据存储异常,写数组操作时,对象或数据类型不兼容。
4、ClassCastException - 类型转换异常。
5、IllegalArgumentException - 方法的参数无效。
6、IllegalThreadStateException - 试图非法改变线程状态,比方说试图启动一已经运行的线程。
7、NullPointerException - 试图访问一空对象的变量、方法或空数组的元素
8、NumberFormatException - 数据格式异常,试图把一字符串非法转换成数值(或相反)。
9、SecurityException - 如果Applet试图执行一被WWW浏览器安全设置所禁止的操作。
10、 - 如改变了某一类定义,却没有重新编译其他引用了这个类的对象。如某一成员变量的声明被从静态改变为非静态,但其他引用了这个变量的类却没有重新编译,或者相反。
11、OutOfMemoryException - 内存不足,通常发生于创建对象之时。
12、NoClassDefFoundException - JAVA运行时系统找不到所引用的类。
13、IncompatibleTypeException - 试图实例化一个接口,Java运行时系统将抛出这个异常。
14、UnsatisfiedLinkException - 如果所需调用的方法是C函数,但Java运行时系统却无法连接这个函数。
15、InternalException - 系统内部故障所导致的异常情况,可能是因为Java运行时系统本身的原因。如果发现一可重现的InternalException,可以直接给Sun公司发电邮[email protected]。
H. JAVA中Callable的call方法抛出的异常会抛到那里
调用的的这个类就要负责接受抛出的异常现则处理异常或者继续抛出。
Callable接口实际上是属于Executor框架中的功能类,Callable接口与Runnable接口的功能类似,但提供了比Runnable更加强大的功能。
Callable可以在任务结束的时候提供一个返回值,Runnable无法提供这个功能,Callable的call方法分可以抛出异常,而Runnable的run方法不能抛出异常。
(8)java抛异常扩展阅读:
注意事项:
对于从事C和C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的皇帝,又是从事最基础工作的劳动人民—既拥有每一个对象的所有权,又担负着每一个对象生命开始到终结的维护责任。
对于Java程序员来说,在虚拟机的自动内存管理机制的帮助下,不再需要为每一个new操作大让中去写配对的delete/free代码,而且不容易出现内存泄漏和内存溢出问题。
因为Java程序员把内存控制的权力交给了Java虚拟机,一旦出现内滑渣存泄漏和溢出方面的问题,如果不了滚山解虚拟机是怎样使用内存的,那排查错误将会成为一项异常艰难的工作。
I. 在java语言中哪个关键字用于在方法上声明抛出异常
java当中,处理异常的方式主要有:try...catch...finally、throw、throws。x0dx0a1、try...catch...finally:try语句块灶谈游中是可能出现异常的代码块,catch语句块中是捕获的异常处理(可以包隐销含多个catch语句块),finally是侍哗任何情况下都回输出的提示。x0dx0a2、对于处理不了的异常或者要转型的异常,在方法的声明处通过throws语句抛出异常x0dx0a3、throw用来抛出一个异常,在方法体内。语法格式为:throw 异常对象。x0dx0athrows用来声明方法可能会抛出什么异常,在方法名后,语法格式为:throws 异常类型1,异常类型2...异常类型n
J. java 中什么时候抛异常,什么时候try/catch谢谢!
这个没有特别的规定,滑袜亩通常根据你的业务而定,
一般建议如下:
1、在通用的方法里,不好穗要try去捕获错误,而是直接抛出异常给调用层处理
2、用户访问界面处理掉所有可能的异常,并记录详细错误日志,然后返回友好的错误界面给用户,信森不要抛异常给用户,不友好