6.3 异常类

参考书籍:Java面向对象程序设计(第二版)--耿祥义 张跃平编著

 

所谓异常就是程序在运行时候可能出现一些错误,如打开一个不存在的文件,异常处理将会改变程序的控制流程,让程序有机会对错误做出处理

Java的异常出现在方法的调用过程中,即在方法调用过程中抛出异常对象,即在方法调用过程中抛出异常对象,导致程序运行出现异常,并等待处理。如流对象在调用read方法读取一个不存在的文件,会抛出IOException异常。

 

异常对象可以调用以下方法得到或输出有关异常的信息:

public String getMessage();

public void printStackTrace();

public String String();

 

一: try-catch语句

 

格式:

Try{

包含可能发生的异常语句(发生异常的语句后跳到catch里面,异常语句下面那些不再执行)

}

catch(ExceptionSubClass1 e){

...

}

catch(ExceptionSubClass2 e){

...

}

各个catch参数中的异常都是Exception的某个子类,表明try部分可能发生的异常,这些子类之间不能有父子关系,否则保留一个含有父类参数的catch即可。

 

 

Java.lang包中的Integer类调用其类方法:

public static int parseInt(String s)

可以将“数字”格式的字符串(如“982”)转化为int型数据,但是当试图将字符串“ab85”转化成数字时,例如:

Int number=Integer.parseInt(ab85);

方法parseInt在执行过程中会抛出NumberFormatException对象,即程序运行时出现NumberFormatException异常(数字格式异常)

 

 

二:自定义异常类

我们也可以扩展Exception类定义自己的异常类,然后规定哪些方法产生这样的异常。

一个方法在声明时可以使用throws关键字声明要产生的若干个异常,并在该方法的方法体中具体给出产生异常的操作,即用对应的异常类创建对象,并使用throw关键字抛出该异常对象,导致该方法结束执行。

程序必须在try-catch块语句中调用能发生异常的方法,其中catch的作用就是捕获throw方法抛出的异常。

注意:throw和throws是两个不同的关键字

 

IntegerEx类

package p4;

public class IntegerEx extends Exception{
    String message;
    public IntegerEx(int a){          //带参数的构造方法
        message=a+"不合理";
    }
    public String toString(){
        return message;
    }
}

 

People类

package p4;

public class People {
    private int age=1;
    public void setAge(int age) throws IntegerEx{
        if(age>=100||age<=0){
            throw new IntegerEx(age);          //方法抛出异常,导致方法结束
        }
        else{
            this.age=age;
        }
    }
    public int getAge(){
        System.out.println(age+"合理");
        return age;
    }
}

 

主类

 

package p4;

public class P4 {
    public static void main(String args[]){
        People chy=new People();
        People hhx=new People();
        try{
            chy.setAge(120);         //调用方法
            System.out.println(chy.getAge());
        }
        catch (IntegerEx e){
            System.out.println(e.toString());
        }
        try{
            hhx.setAge(20);
            System.out.println(hhx.getAge());
        }
        catch (IntegerEx e){
            System.out.println(e.toString());
        }
    }
}

 

 

猜你喜欢

转载自blog.csdn.net/weixin_42717928/article/details/81199066
6.3