首页 > 解决方案 > 异常正在停止程序 - 如何防止它

问题描述

我有以下方法:

 void checkAge() {
    if (age < 18) {
        throw new ArithmeticException("Access denied - You must be at least 18 years old.");
    }
    else {
        System.out.println("Access granted - You are old enough!");
    }
}

如果年龄小于 18 岁,我如何防止停止我的程序?

标签: java

解决方案


虽然最初的直觉很好,但这不是 Exceptions 的用途。异常通常用于指示 VM 中发生的错误,通常不应用于创建逻辑流。

最简单的方法是将您的函数转换为布尔函数

boolean checkAge() {
    if (age < 18) {
        return false;
    }
    else {
        return true;
    }
}

然后可以在您的main功能中使用它

public static void main(String[] args) {
  int age = 20;
  if(checkAge(age)){
     System.out.println("Access granted - You are old enough!");
  } else {
     System.out.println("Access denied - You must be at least 18 years old.");
  }
}

显然,您想要显示它的方式(System.out,一个消息框)取决于您。

在这种情况下应该注意的另一件事是,该函数有点过于简单,无法抽象为代码的整个单独部分,您应该直接在主函数中进行比较,如下所示:

public static void main(String[] args) {
  int age = 20;
  if(age >= 18){
     System.out.println("Access granted - You are old enough!");
  } else {
     System.out.println("Access denied - You must be at least 18 years old.");
  }
}

推荐阅读