gpt4 book ai didi

java - 我在哪里编写处理异常的代码?

转载 作者:行者123 更新时间:2023-12-02 05:25:17 27 4
gpt4 key购买 nike

好吧。所以我有一个名为“PayrollDemo”的类,它使用一个名为“Payroll”的类。我已经设置了几个异常类来管理某些异常,现在我只需要弄清楚如何抛出这些异常。

我想,我应该通过一系列 if 语句来检查输入的每个字段是否符合正确的标准。问题是,由于异常处理位于与我正在工作的类不同的类中,因此我不确定如何抛出它。

因此,在这里我要确保名称字符串不为空,如果是,则应该会导致名为“InvalidNameException”的异常,并将其抛出到与我的位于同一文件夹中的“InvalidNameException”类“薪资演示”类。

public class PayrollDemo
{
public static void main(String[] args)
{
Payroll pr = new Payroll ("Test Name", 234);

System.out.println("Current Employee Information. \n");
System.out.println("Name: " + pr.getName());
System.out.println("ID: " + pr.getID());
System.out.println("Hourly Pay Rate: " + pr.getHourlyPayRate());
System.out.println("Number Hours Worked: " + pr.getNumHoursWorked());
System.out.println("Gross Pay: $" + pr.calculateGrossPay() + "\n");

System.out.println("Welcome to the payroll screen. \n");
Scanner keyboard = new Scanner(System.in);
System.out.print("Please enter a name: ");
String newName = keyboard.nextLine();
System.out.print("Please enter an ID: ");
int newID = keyboard.nextInt();
pr.setID(newID);
System.out.print("Please enter an hourly pay rate: ");
double newPayRate = keyboard.nextDouble();
pr.setHourlyPayRate(newPayRate);
System.out.print("Please enter the number of hours worked: ");
int newHours = keyboard.nextInt();
pr.setNumHoursWorked(newHours);

if (newName == "")
{
throw new InvalidNameException();
}
else
{
pr.setName(newName);
}

这是 InvalidNameException

public class InvalidNameException extends Exception
{
/**
No-arg constructor
*/

public InvalidNameException()
{
super("Invalid name");
}
}

最佳答案

您正确地抛出了异常。但是,您可以从 main() 中抛出它。因此,它将导致 main() 的执行立即终止并出现异常,这意味着程序将打印堆栈跟踪并退出,除非您用 try block 括起来。

您需要编写一个具有 try block 的方法,并调用另一个包含您发布的代码的方法(可能在不同的类上)。在 try block 的末尾,您捕获 InvalidNameException 并执行某些操作(例如再次将用户发送回数据输入)。

编辑:异常类 InvalidNameException处理异常。这是异常(exception)。您在此类上编写的唯一代码将是描述异常条件所需的代码 - 例如,您可以为其提供一个属性,该属性是名称的实际值。

关于java - 我在哪里编写处理异常的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26102185/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com