java - 在 Java 中尝试 Catch block

标签 java exception try-catch

所以我得到了这段代码,我必须创建一个异常,然后使用 Try/Catch block 来捕获它。我已经在代码底部创建了异常。但我以前从未使用过 Try/Catch block ,我不确定如何实现它。

如果输入的排名未在 enum 下列出,则异常(exception)。我还需要对捕获的异常使用 toString,但我很确定我可以解决这个问题。

package pracapp4;

import java.util.Scanner;

public class Staff extends Employee
{

  enum Title
  {
    DEPARTMENT_HEAD, DIRECTOR, DEAN, VICE_CHANCELLOR, CHANCELLOR
  }

  private Title title;

  public Staff()
  {
    super();
    title = Title.DEPARTMENT_HEAD;
  }

  public Staff(String firstName, String lastName, int salary, Title title)
  {
    super(firstName, lastName, salary);
    this.title = title;

  }

  @Override
  public String toString()
  {
    return super.toString() + "\n\tTitle: " + title;
  }


  @Override
  public void display()
  {

    System.out.println("<<Staff>>" + this);

  }

  @Override
  public void input(Scanner in)
  {
    super.input(in);

    if (in.hasNext())
    {
      this.title = Enum.valueOf(Title.class, in.next());
    }
  }

  class InvalidRankException extends Exception
  {
      public InvalidRankException()
      {
       super ("Unknown Rank Name: ");

      }   
  }
}

最佳答案

你不需要那个异常(exception)。当您将 Title 枚举作为传递给 Staff 构造函数的类型添加时,不可能在枚举中提供的值。您永远不会得到无效的标题。这就是枚举的全部意义。

更新:一点代码审查是这里的命令。

  1. 您的默认构造函数很奇怪。没名字没薪水也能当部门主管?在这里调用“this”是合适的,更好的默认值是有序的。
  2. 只有薪水的整数 - 好的。没有单位?美元?欧元?
  3. 工资可以为负数吗?那有意义吗? ( self 注意:不要在那里工作。)
  4. 为什么同时需要 toString 和 display?什么是显示覆盖?我建议放弃显示并坚持使用 toString。
  5. 您的输入法毫无意义。
  6. 为什么该异常是内部类?

关于java - 在 Java 中尝试 Catch block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1175127/

相关文章:

python - 验证字典列表中元素格式正确的最佳实践

java - 我应该如何为我的神经网络中的训练集建模?

java - MySQL Netbeans Java 结果集失败

java - 如何控制JAVA中的CATCH错误

ios - 尝试抛出错误,但为什么呢?

java - 无法使用 try-catch 捕获 Java (Android) 异常

java - https 帖子 : MalformedURLException on App Engine

java - 向 JavaFx tableView 添加一个简单的行

java - 抛出以指示失败 "sanity check"的最佳内置 JRE 异常是什么?

exception - 测试 Twig 模板中是否存在路由 (Symfony 2)