java自定义异常
A. 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中捕获或者在外面捕获
B. java 自定义异常 aop捕获怎么返回给control层
1)先定义一个类继承Exception(或者别的RuntimeException等);
2)然后写个方法可能抛出这个异常,并且什么情况下会抛出异常;
3)调用这个方法,写try,catch语句,捕获这扰掘个异常;
小例子,参瞎滚考看下缓神核:
class UserNotFoundException extends RuntimeException {
public UserNotFoundException() {}
public UserNotFoundException(String message) {
super(message);
}
public void f() throws UserNotFoundException {
throw new UserNotFoundException("用户名不对");
}
}
public class Exception {
public static void main(String args[]) {
try {
new UserNotFoundException().f();
} catch (UserNotFoundException e) {
System.out.println(e.getMessage());
}
}
}
C. 如何用Java程序来编写一个异常
class MyException extends Exception //自定义的异常类雀拿 继承Exception类
{
private String exceptionName; //定义一个私有弯敏变量,用来为自定义异常
public MyException(){} //创建一个无参数的构造函数
public MyException(String exceptionName){ //创建一个有参数的构造函数,传入的参数为前面定义的异常名称
this.exceptionName=exceptionName;
}
public String getExceptionName(){ //定义一个方法,提供给外部来获取私有变量
return this.exceptionName;
}
public static void main(String [] args){
try{
System.out.println("自定义的异常类对象");
throw new MyException("自定义的异常");//抛一个自定义的异常类对象,传入的参数就是给控制顷闹搭台看的异常
}catch(MyException e){
System.out.println("异常信息:"+e.getExceptionName());
}
}
}
我已经尽力你……你懂的!
D. 如何编写java中的自定义异常类
编写自定义异常类实际上是继承一个API标准异常类,用新定义的异常处理信息覆盖原有信息的过程。常用的编写自定义异常类的模式如下:
public class CustomException extends Exception { //或者继承任何标准异常类
public CustomException() {} //用来创建无参数对象
public CustomException(String message) { //用来创建指定参数对象
super(message); //调用超类构造器
}
}
当然也可选用Throwable作为超类。其中无参数构造器为创建缺省参数对象提供了方便。第二个构造器将在创建这个异常对象时提供描述这个异常信息的字符串,通过调用超类构造器向上传递给超类,对超类中的toString()方法中返回的原有信息进行覆盖。
来讨论一个具体例子。假设程序中需要验证用户输入的表示年龄的数据必须是正整数值。我们可以按照以上模式编写这个自定义异常类如下:
public class NegativeAgeException extends Exception {
//或者:extends Throwable
public NegativeAgeException() {}
public NegativeAgeException(String message) {
super(message);
}
}
下面是应用这个自定义异常类的例子:
try{
String ageString = JOptionPane.showInputDialog("Enter your age: ");
if (Integer.parseInt(ageString) < 0)
throw new NegativeAgeException("Please enter a positive age");
else
JOptionPane.showMessageDialog(null, ageString, "Age", 1);
}
catch(NegativeAgeException e){
System.out.println(e);
}
E. JAVA自定义异常怎样获取行数
你可能不能获取行数模卖灶,java是在遇到异常就抛出,你的捕获代码只能捕获到时什么异常。但是如果你是想捕获输入的数字,你可以先自己分析,然后由自己的异常抛出。例如配郑你用Scanner读取整数,一般是这样Scanner input = new Scanner(System.in);int a = input.nextInt();现在你可以用String str=input.next()的方式先读入一个字符串,然后分析这个字符串是不是都是数字,如果不是,你可以把你得到的这个字符串封装在你自己定义的异常中抛出,然后捕获的时候就能输出旦扮这个数。
F. 在JAVA中如何创建一个自定义异常
自定义异常类型贺兆是从Exception类中派生的,所以要使用下面的声明语句来拦拍亏创建:
<class><自定义异常名><extends><简神Exception>{...}
G. Java自定义异常,应该继承Exception还是Runtime Exception,为什么
/*
RuntimeException属于Exception的子类
Exception是在编译时册蠢茄候如果有异常就可州察以检查出来,比较严谨!
RuntimeException比较特殊,他及其子类对象,属于运行时候检查的异常,如果语法没有错误
他不会在编译时候报异常的,只有运行的时候才会抛出异常!
至于继承谁,得看你的类具体的功能,其实这两点已经说的很明确了,如档皮果你继承了Exception
要么抛出去给上级调用者,要么调用异常代码的时候进行捕捉,有相对应的处理方式!
如果继承的是RuntimeException,可以不用抛,也可以不用捕捉但是问题是在运行的过程中才会
展现出来!一但出错,后面程序将无法继续运行!
*/
H. 求解java中在什么情况下需要用到自定义异常
class NotScoreException extends Exception
{
public NotScoreException()
{
super();
}
public NotScoreException(String message)
{
super(message);
}
}
public class MyExceptionTest
{
public static String getGrade(double score)throws NotScoreException
{
if(score<=100&&score>=60)
{
return "及格";
}
else if(score<60&&score>芦败=0)
{
return "不及格";
}
else
{
throw new NotScoreException("陪旅颤输入镇旁成绩有误");
}
}
public static void main(String[] args)
{
try
{
System.out.println("75分的等级为:"+getGrade(75));
System.out.println("105分的等级为:"+getGrade(105));
}
catch (NotScoreException e)
{
System.out.println("发生自定义异常,异常信息为:"+e.getMessage());
}
}
}
I. Java 求大神们解答:自定义异常,处理异常
Java 允许我们定义自己的异常,这样的异常就称为自定义异常。定义自定义异常的方式是继承 Exception 类,然后定义一个类来代表该异常。
下面是定义自定义异常类的示例:
================
public class MyException extends Exception {
public MyException() {
super();
}
public MyException(String message) {
super(message);
}
}
================
这里定义了一个名为 MyException 的类,它继承了 Exception 类,并定义了两个构造方法,一个是无参构造方法,另一个是带有一个字符串参数的构造方法,该字符串参数用于传入错误信息。
接下来,我们可以在可能抛出异常的方法中使用 throws 关键字声明该方法可能抛出的异常,并在方法中使用 throw 语句抛出异常。例如:
================
public class UsingMyException {
public void f() throws MyException {
System.out.println("抛出异常MyException 从 f()方法");
throw new MyException();
}
public void g() throws MyException {
System.out.println("抛出异常MyException 从 g()方法");
throw new MyException("从g()方法中抛出异常");
}
}
================
这里我们定义了一个名为 UsingMyException 的类,它包含两个方法: f() 和 g()。两个方法都使用了 throws 关键字声明它们可能会抛出 MyException 异常,并在方法内部使用 throw 语句抛出该异常
J. java中在catch中抛出自己定义的异常
通过throw抛出自定义异常
1、定义一个自定义键庆孙异常类
{//或者继承任何标准异常类
publicCustomException(){}//用来创建无参数对象
publicCustomException(Stringmessage){//用来创建指定参数对象
super(message);//调用超类构差绝造器
}
}
2、抛出异常
try{
//执行语句
}catch(Exceptionex){
thrownewCustomException("稿链自定义异常");//在catch中抛出自定义异常
}