【发布时间】:2018-08-02 12:46:58
【问题描述】:
我有两个班级:Student 和 University。
public class University {
private String name;
private List<Student> students;
public University(String name) {
this.name = name;
this.students = new ArrayList<Student>();
}
还有一个计算平均分的函数:
public double average() {
double average = 0;
for(Student st: students) {
average += st.getKnowledge();
}
try {
return average/students.size();
}
catch(ArithmeticException e) {
System.out.println("Oops, there is no student studying");
return 0.0;
}
}
因此,如果列表中没有学生,我会得到除以零,我尝试使用 try\catch 块来处理。
我想知道是否有任何方法可以简化此检查以避免try catch 块?当然,我可以这样实现:
public double average() {
double average = 0;
for(Student st: students) {
average += st.getKnowledge();
}
if (students.size() == 0)
throw new IllegalArgumentException("Oops, there is no student studying");
return average/students.size();
}
要么
if (students.size() == 0)
System.out.println(""Oops, there is no student studying"");
或者可能没有必要检查它,因为如果students 列表为空,那么它根本不会进入循环?
我知道这个问题很简单,但我只是在学习,所以我想知道将来选择哪种方式更好。 而且也许还有隐藏的问题或什么?与边界值或其他什么?
提前致谢。
【问题讨论】:
-
使用条件语句。 if ( divisor != 0 ) { // 执行除法 } // 其余代码
标签: java error-handling