在Java中抛出异常(Throw exception in Java)

2019-09-29 16:56发布

假设我有一个类,要求是“更改下面的代码中抛出checked异常,如果‘书房’为0,并更改功能,捕获了异常”。

public class divide {
void divide(int num, int den){
    System.out.println(""+(num/den));
}
void fun(){
    divide(4,2);
}
}

下列哪一个是抛出异常的正确方法是什么?

选项1:

void divide(int num, int den) throws Exception{
    if(den==0){
        throw new Exception("Dividebyzero");
    }
    System.out.println(""+(num/den));
}
void fun(){
    try {
        divide(4,2);
    } catch (Exception e) {
    } 
}

选项2://我觉得这是正确的

void divide(int num, int den){
    if(den==0){
        throw new RuntimeException("Dividebyzero");
    }
    System.out.println(""+(num/den));
}
void fun(){
    try {
        divide(4,2);
    } catch (RuntimeException e) {
    } 
}

方案3:

void divide(int num, int den) throws Exception{
    if(den==0){
        throw new RuntimeException;
    }
    System.out.println(""+(num/den));
}
void fun(){
    try {
        divide(4,2);
    } catch (Exception, RuntimeException) {
    } 
}

这个问题来自的Java的运动之一。 我已经学会了Java的几年,但我也有点困惑的尝试捕捉抛出。 就个人而言,我认为,选择2是正确的,因为我们只抛出异常一次,还是我错了?

Answer 1:

下列哪一个是抛出异常的正确方法是什么?

我不会代码复杂化,相反,我会用它已经抛出异常。

void printDivide(int num, int den) throws ArithmeticException {
    System.out.println(num / den);
}

使用不同的异常不只是更加复杂,这是令人困惑的。


让设置它是一个不同的示例中,然后IllagelArgumentException为非法参数一个很好的选择,例如建立一个数组

void createArray(int size) {
    if (size < 0)
        throw IllegalArgumentException("Size must be non-negative " + size);
    this.array = new int[size];
}


文章来源: Throw exception in Java