java怎么用关键字来声明?怎么样自定义异常?

BSO 2020-08-28 08:49:18 java常见问答 7637

在java的日常使用当中,总是会有各种各样的问题出现。今天就为大家介绍一下,在java中怎样用关键字来声明,以及怎样自定义异常。

首先,在使用该方法的前提是,这个方法没有捕获到一个检查性异常,那么该方法必须使用throws关键字来声明。throws关键字一般放置在方法签名的尾部。

当然,可以使用throws关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。

下面方法的声明抛出一个RemoteException异常:

import java.io.*;
public class className
{
    public void deposit(double amount) throws RemoteException
    {
        // Method implementation
        throw new RemoteException();
    }
    //Remainder of class definition
}

同时需要注意,一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。

举个例子,下面的方法声明抛出RemoteException和InsufficientFundsException:

import java.io.*;
public class className
{
    public void withdraw(double amount) throws RemoteException
        , InsufficientFundsException
        {
            // Method implementation
        }
    //Remainder of class definition
}

还有一种方法是用finally关键字来声明。

一般来说,finally关键字用来创建在try代码块后面执行的代码块。所以无论是否发生异常,finally代码块中的代码总会被执行。并且在finally代码块中,可以运行清理类型等收尾善后性质的语句。

当finally代码块出现在catch代码块最后,语法如下:

try
{
    // 程序代码
}
catch (异常类型1 异常的变量名1)
{
    // 程序代码
}
catch (异常类型2 异常的变量名2)
{
    // 程序代码
}
finally
{
    // 程序代码
}

下面用一个实例展示:

public class ExcepTest
{
    public static void main(String args[])
    {
        int a[] = new int[2];
        try
        {
            System.out.println("Access element three :" + a[3]);
        }
        catch (ArrayIndexOutOfBoundsException e)
        {
            System.out.println("Exception thrown  :" + e);
        }
        finally
        {
            a[0] = 6;
            System.out.println("First element value: " + a[0]);
            System.out.println("The finally statement is executed");
        }
    }
}

运行结果如下:

Exception thrown: java.lang.ArrayIndexOutOfBoundsException: 3
First element value: 6
The
finally statement is executed

同时需要注意的是:1.catch不能独立于try存在;2.在try/catch后面添加finally块并非强制性要求的;3.try代码后不能既没catch块也没finally块;4.try, catch, finally块之间不能添加任何代码。

那么,我们应该怎么样来自定义异常呢?

首先,我们编写的时候应该要注意以下几点:1.所有异常都必须是Throwable的子类;2.如果希望写一个检查性异常类,则需要继承Exception 类;3.如果你想写一个运行时异常类,那么需要继承RuntimeException类。

我们可以像下面这样定义自己的异常类:

class MyException extends Exception
{}

并且只继承Exception类,来创建的异常类是检查性异常类。

下面的InsufficientFundsException类是用户定义的异常类,它继承自Exception。一个异常类和其它任何类一样,包含有变量和方法。

下面是一个实例,这个实例是一个银行账户的模拟,通过银行卡的号码完成识别,可以进行存钱和取钱的操作:

// 文件名InsufficientFundsException.java
import java.io.*;
//自定义异常类,继承Exception类
public class InsufficientFundsException extends Exception
{
    //此处的amount用来储存当出现异常(取出钱多于余额时)所缺乏的钱
    private double amount;
    public InsufficientFundsException(double amount)
    {
        this.amount = amount;
    }
    public double getAmount()
    {
        return amount;
    }
}

为了展示如何使用我们自定义的异常类,在下面的CheckingAccount类中包含一个withdraw()方法抛出一个InsufficientFundsException异常,代码展示:

// 文件名称 CheckingAccount.java
import java.io.*;
//此类模拟银行账户
public class CheckingAccount
{
    //balance为余额,number为卡号
    private double balance;
    private int number;
    public CheckingAccount(int number)
    {
        this.number = number;
    }
    //方法:存钱
    public void deposit(double amount)
    {
        balance += amount;
    }
    //方法:取钱
    public void withdraw(double amount) throws
    InsufficientFundsException
    {
        if (amount <= balance)
        {
            balance -= amount;
        }
        else
        {
            double needs = amount - balance;
            throw new InsufficientFundsException(needs);
        }
    }
    //方法:返回余额
    public double getBalance()
    {
        return balance;
    }
    //方法:返回卡号
    public int getNumber()
    {
        return number;
    }
}

下面的BankDemo程序示范了如何调用CheckingAccount类的deposit()和withdraw()方法。代码展示:

//文件名称 BankDemo.java
public class BankDemo
{
    public static void main(String[] args)
    {
        CheckingAccount c = new CheckingAccount(101);
        System.out.println("Depositing $500...");
        c.deposit(500.00);
        try
        {
            System.out.println("\nWithdrawing $100...");
            c.withdraw(100.00);
            System.out.println("\nWithdrawing $600...");
            c.withdraw(600.00);
        }
        catch (InsufficientFundsException e)
        {
            System.out.println("Sorry, but you are short $" +
                e.getAmount());
            e.printStackTrace();
        }
    }
}

同时,通过编译上面三个文件,并运行程序BankDemo,得到结果如下所示:

Depositing $500...
    Withdrawing $100...
    Withdrawing $600...
    Sorry, but you are short $200 .0
InsufficientFundsException
at CheckingAccount.withdraw(CheckingAccount.java: 25)
at BankDemo.main(BankDemo.java: 13)

通过上文我们可以得知怎么用关键字来声明,同时如何自定义异常。更多有关java常见问题,敬请关注奇Q工具网。

推荐阅读:

java 异常处理的原因,怎么描述它?

java关键字有哪些?java关键字大全

java定时器任务要怎么让它执行?