java - java中的异常

标签 java exception throw

我写了一个代码来检查各种条件。

如果它满足条件它会做它应该做的事情,否则我希望它抛出一个 异常。

有什么特殊的语法吗?否则编译器要我返回任何数组, 由于前提条件,我不想这样做。

这是我的部分代码:

public static int [] code(int[]arr){
    if ((arr!=null)&&(chack4and5(arr))&&(arr[arr.length-1]!=4)&&(TwoFours(arr))){
        int k=0;
        for(int i = 0; i<=arr.length-1; i++){
            if (arr[i] == 4){
                int place= pos(arr,k);
                arr[place]=arr[i+1];
                arr[i+1]=5;
                k=k+3;  
            }
        }
        return arr;
    }
    else { 
        System.out.println("Please enter a legal array which matches the pre- conditions");
        }
}

最佳答案

抛出异常的方式是

throw new IllegalArgumentException(
        "Please enter a legal array which matches the pre- conditions");

IllegalArgumentException是适合当前情况的Java运行时异常,当然你也可以选择其他的,或者自己创建使用自己的类型。唯一的限制是它必须是 java.lang.Exception 的子类。

我会重新安排您的代码,但首先要检查先决条件,然后在一切正常的情况下继续 - 我发现这更具可读性:

if (arr == null || !chack4and5(arr) || arr[arr.length-1] == 4 || !TwoFours(arr)) {
  throw new IllegalArgumentException(
        "Please enter a legal array which matches the pre- conditions");
}
int k=0;

for(int i = 0; i<=arr.length-1; i++){
    if (arr[i] == 4){
        int place= pos(arr,k);
        arr[place]=arr[i+1];
        arr[i+1]=5;
        k=k+3;
    }
}
return arr;

(事实上,我什至更愿意将前提条件检查提取到一个单独的方法中——但我把这个留给你了。)

关于java - java中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5492952/

相关文章:

HashMap<String,LinkedList<Investor>> 的 java jackson 数据绑定(bind)

java - 用于更改的 while 循环

java - 无法运行从 javafx-basic-archetype 生成的包

java - 抛出异常

java : "error: unreported exception Exception; must be caught or declared to be thrown"

java - 捕获异常并重新抛出

java - 如何在Scala中使用JCache?我收到编译器类型错误 : found String required K

winforms - OnIdle 事件中的异常不会冒泡

java - 在 Java 生产代码中使用 Junit Assert API 可以吗

c# - "The invocation of the constructor on type ' TestWPF.MainWindow ' that matches the specified binding constraints threw an exception."- 如何解决这个问题?