java - 如何在编译过程中捕获异常

标签 java exception compilation

您好,我是一名初学者程序员,我刚刚学习 Java 中的异常,并且我所学到的有关异常的知识是自学的,尚未在类里面介绍。我希望有一个简单的方法,它只接受 4 个特定的字符串作为输入,否则不起作用。我现在所拥有的看起来像这样:

public void setRating(String rating){
    switch (rating){
        case "G":
        case "PG":
        case "R":
        case "NR":  this.rating = rating;
                    break;
        default:    throw new IllegalArgumentException();
    }
}

这工作正常,但如果我随后编写无效代码,例如:

setRating("invalid");

我的代码编译后不会发送错误消息,直到我尝试运行它。

我的问题是:有没有办法编写这个以便在编译时捕获它?在我看来,将来允许像这样编译无效代码可能会让使用我的代码的人感到头疼。不确定这是否是一个愚蠢的问题,甚至是我应该担心的事情,但任何见解将不胜感激!

最佳答案

使用 enum ,以便以编译器可以理解的方式定义允许的值。

public enum Rating {
    G, PG, R, NR
}
<小时/>
public void setRating(Rating rating){
    this.rating = rating;
}
<小时/>
setRating(Rating.G);

关于java - 如何在编译过程中捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42964166/

相关文章:

java - 一个junit测试用例运行后,是否应该删除与这个测试用例相关的测试数据?

Java ip2long 等价物

java - 无论我做什么,我都无法保存相机捕获的图像。我该怎么做?

ruby-on-rails - 当我运行功能测试时,如何在 Ruby on Rails 应用程序中禁用救援处理程序?

安卓异常 : Did you forget to call 'public void setup (LocalActivityManager activityGroup)'

emacs - 如何让编译日志在 Emacs 中创建一个新窗口?

java - Hashset、Treeset 和 LinkedHashset、Hashmap 之间的主要区别是什么?它在 Java 中如何工作?

java - 让 Eclipse 捕获仅从我自己的代码抛出的异常?

java - 在 Eclipse 中重新构建已删除的类文件

compilation - 你如何在scheme中编译一个可执行文件?