Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何实现自定义异常?_Java_Eclipse_Exception - Fatal编程技术网

Java 如何实现自定义异常?

Java 如何实现自定义异常?,java,eclipse,exception,Java,Eclipse,Exception,这是我的加班特例,如果销售目标没有达到,我会打印邮件 public class OverTimeException extends Exception { int salesTarget; public OverTimeException(int s) { salesTarget = s; } String myPrint() { return "exception

这是我的加班特例,如果销售目标没有达到,我会打印邮件

public class OverTimeException extends Exception {

        int salesTarget;
        public OverTimeException(int s) {
            salesTarget = s;
        }
        String myPrint()
        {

            return "exception caught because sales target is " + salesTarget; 


        }
    }
这是我想在salesTarget方法中使用异常的Clerk类。我的问题是如何将异常实现到salesTarget方法中?谢谢

public class Clerk extends Admin implements ClerkInterface {

    final double payRate = 13.00;
    final int salesTargetNum = 46;


    //Member variables
    private double unitSold;

    //Constructor
    public Clerk(String inName, String inId, double inHoursWorked,
            double intkPay, double inAdmin_quota,double inUnitSold) {
        super(inName, inId, inHoursWorked, intkPay, inAdmin_quota);

        setUnitSold(inUnitSold);

    }


    //setUnitsSold method
    private void setUnitSold(double inUnitSold) {
        unitSold = inUnitSold;

    }


    //getUnitsSold
    public double getUnitsSold(){

        return unitSold;
    }





    //toString method
    public String toString()
    {
        return " " + super.toString() + "Admin Quota " + getAdmin_quota() + "Units Sold" + getUnitsSold();


    }


    //method to confirm sales targets are made from ClerkInterface.
    public void salesTarget() {

        if(salesTargetNum >= unitSold){

            System.out.println("Clerk has not meet sales target");
        }
        else
        {
            System.out.println("Clerk has meet sales target");
        }

    }





    }//end Clerk

如果要抛出异常,只需执行以下操作

throw new OverTimeException(salesTargetNum);

如果要抛出异常,只需执行以下操作

throw new OverTimeException(salesTargetNum);
你需要

在方法签名中声明异常 需要时抛出该方法 e、 g

请注意,您不需要在方法签名中声明。

您需要

if(salesTargetNum >= unitSold){
    throw new OverTimeException(salesTarget);         
} else {
    System.out.println("Clerk has meet sales target");
}
在方法签名中声明异常 需要时抛出该方法 e、 g

注意,您不需要在方法签名中声明

if(salesTargetNum >= unitSold){
    throw new OverTimeException(salesTarget);         
} else {
    System.out.println("Clerk has meet sales target");
}
请注意,在OverTimeException类中需要一个toString方法,而不是toPrint方法

另外,在方法声明的throws子句中添加此异常

请注意,在OverTimeException类中需要一个toString方法,而不是toPrint方法

另外,在方法声明的throws子句中添加此异常。

使用

 public void salesTarget() throws OverTimeException {
    if(salesTargetNum >= unitSold){
        throw new OverTimeException(salesTargetNum);
    } else {
        System.out.println("Clerk has meet sales target");
    }
}
您的异常应该这样声明

public class OverTimeException extends Exception {

    public OvertimeException(int s){
        super("exception caught because sales target is " + s);
    }

}
使用

您的异常应该这样声明

public class OverTimeException extends Exception {

    public OvertimeException(int s){
        super("exception caught because sales target is " + s);
    }

}

我强烈建议您重写Exception类中的所有构造函数


我强烈建议您重写Exception类中的所有构造函数


我试过了,但它说salesTarget不能解析为局部变量,有什么想法吗?感谢在引发异常时要引用的成员是salesTargetNum,而不是salesTarget。您试图从何处引发异常?你能粘贴代码吗?是的,public void salesTarget{ifsalesTargetNum>=unitsell{抛出新的OverTimeExceptions;}否则{System.out.printlncler已达到销售目标;}}你正在引用salesTarget方法中的变量s,但当前范围内没有这样的变量,即。,s不是局部变量或Clerk类的属性。我想你想引用salesTargetNum,但我不确定。也许你想买些什么?不管怎样,s肯定是错的。我试过了,但它表明salesTarget不能解析为局部变量,有什么想法吗?感谢在引发异常时要引用的成员是salesTargetNum,而不是salesTarget。您试图从何处引发异常?你能粘贴代码吗?是的,public void salesTarget{ifsalesTargetNum>=unitsell{抛出新的OverTimeExceptions;}否则{System.out.printlncler已达到销售目标;}}你正在引用salesTarget方法中的变量s,但当前范围内没有这样的变量,即。,s不是局部变量或Clerk类的属性。我想你想引用salesTargetNum,但我不确定。也许你想买些什么?不管怎样,s肯定是错的。