【问题标题】:Exception incompatible with throws clause异常与 throws 子句不兼容
【发布时间】:2016-04-03 19:26:08
【问题描述】:

当我创建自己的异常时,我正在那里开发小型 AOP 独立项目,它给出了与 throws 子句不兼容的错误异常。如果有人可以非常感谢,请帮助。

这是我写的异常类

package com.mtit.exceptions;

public class InsufficientAmountException extends Exception 
{
    /**
     * exception for handling invalid payment 
     */
    private static final long serialVersionUID = 1L;

    public InsufficientAmountException(String message)
    {
        super(message);
    }
}

这是方法

public void PaymentPatient(String PatientID,double discountRate,double ChargePerDay,double cashAmount) throws InsufficientAmountException 

{

    double totalAmount=CalculateTotalAmountPatient(PatientID,discountRate,ChargePerDay);

    if(cashAmount>=totalAmount)
    {
        double balance=cashAmount-totalAmount;
        System.out.println("Payment Succefully done your balance is "+"\t"+balance);

    }
    else
    {
        throw new InsufficientAmountException("Balance is insufficient");
    }
}

这里是主要方法

try
    {
        //call the payment method i have written above
    }
    catch(InsufficientAmountException e)
    {
        System.out.println("");
    }

我得到的错误

主要方法

public class Main {

public static void main(String[] args) 
{


    try
    {
        Payment();
    }
    catch(InsufficientAmountException e)
    {
        System.out.println("");
    }



}
public static void Payment()
{
    PatientService patientService=new PatientServiceImpl();
    Scanner scanner=new Scanner(System.in);

    System.out.println("Enter Patient ID");
    String id=scanner.nextLine();

    System.out.println("Enter Discount rate");
    double discount=Double.parseDouble(scanner.nextLine());

    System.out.println("Enter No of Days");
    int noOfDays=Integer.parseInt(scanner.nextLine());

    double totalAmount=patientService.CalculateTotalAmountPatient(id, discount, noOfDays);

    System.out.println("Your total charge is"+"\t"+totalAmount);

    System.out.println("Would you like to do payment enter yes or no");
    String result=scanner.nextLine();

    if(result=="yes")
    {

        System.out.println("Enter charge per day");
        double ChargePerDay=Double.parseDouble(scanner.nextLine());

        System.out.println("Enter cash amount");
        double cashAmount=Double.parseDouble(scanner.nextLine());

        patientService.PaymentPatient(id, discount, ChargePerDay, cashAmount);

    }
    else

    {
        System.out.println("Please do the payment with in 3 days to get rid from tax");
    }








}

【问题讨论】:

  • 我已经用截图提到了错误
  • 你有一个空指针。
  • 您需要在try 中实际引发异常的代码
  • 截图显示Payment(),而代码显示PaymentPatient
  • 如果你调用 PaymentPatient(String PatientID,do..... 方法,这个错误就会消失。除此之外,在方法上使用小写的第一个字符

标签: java exception-handling throws


【解决方案1】:

因为Payment() 方法没有用throws InsufficientAmountException 声明,所以你的try...catch 块是无用的,这就是你得到错误的原因。要么删除try...catch 块,要么修改Payment() 以抛出InsufficientAmountException

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多