java中的异常

java中的异常,java,exception-handling,throw,Java,Exception Handling,Throw,我写了一个检查各种条件的代码 如果它符合条件,它会做它应该做的,否则我希望它抛出一个 例外 有什么特殊的语法吗?否则编译器要我返回任何数组, 因为先决条件,我不想这么做 以下是我的部分代码: public static int [] code(int[]arr){ if ((arr!=null)&&(chack4and5(arr))&&(arr[arr.length-1]!=4)&&(TwoFours(arr))){ int

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

如果它符合条件,它会做它应该做的,否则我希望它抛出一个 例外

有什么特殊的语法吗?否则编译器要我返回任何数组, 因为先决条件,我不想这么做

以下是我的部分代码:

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");
        }
}
公共静态int[]code(int[]arr){
如果((arr!=null)&&(chack4and5(arr))&&&(arr[arr.length-1]!=4)&&(two-fours(arr))){
int k=0;

对于(int i=0;i你可以自己抛出一个异常。也许最好的方法是定义一个自定义异常,然后抛出它。如果你不想这样做,请使用IllegalArgumentException

下面是一个自定义异常的示例:

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 { 
           throw new MyException("No legal array");
        }
    }
}
public class MyException extends Exception {
   public MyException(String message) {
      super(message);
   }
}

你可以自己抛出一个异常。也许最好的方法是定义一个自定义异常,然后抛出它。如果你不想这样做,请使用IllegalArgumentException

下面是一个自定义异常的示例:

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 { 
           throw new MyException("No legal array");
        }
    }
}
public class MyException extends Exception {
   public MyException(String message) {
      super(message);
   }
}
是一个
RuntimeException
,这意味着某些参数与预期不符。由于这是一个未检查的异常,因此不会强制调用方以任何方式处理它(与检查的异常相反)


是一个
RuntimeException
,这意味着某些参数与预期不符。由于这是一个未检查的异常,因此不会强制调用方以任何方式处理它(与已检查的异常相反)

如果异常是关于您的参数的某些内容非法,则抛出:


如果例外情况是有关参数的某些内容是非法的,则抛出:


你可能想看看

要抛出异常,请使用
throw
关键字

要标记方法可能引发异常,请使用
throws
关键字,如

public static void foo() throws SomeException

你可能想看看

要抛出异常,请使用
throw
关键字

要标记方法可能引发异常,请使用
throws
关键字,如

public static void foo() throws SomeException

抛出异常的方法是

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;
if(arr==null | | |!chack4and5(arr)| | arr[arr.length-1]==4 | | |!TwoFours(arr)){
抛出新的IllegalArgumentException(
“请输入符合先决条件的合法数组”);
}
int k=0;

对于(inti=0;i,抛出异常的方法是

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;
if(arr==null | | |!chack4and5(arr)| | arr[arr.length-1]==4 | | |!TwoFours(arr)){
抛出新的IllegalArgumentException(
“请输入符合先决条件的合法数组”);
}
int k=0;

对于(inti=0;i您可以使用此行抛出异常

throw new SomeKindOfException("Exception description"); // or any other exception, also yours...
但您需要在方法声明中指定:

 public static int [] code(int[]arr) throws SomeKindOfException{

有关更多信息,请参见。您可以使用此行引发异常

throw new SomeKindOfException("Exception description"); // or any other exception, also yours...
但您需要在方法声明中指定:

 public static int [] code(int[]arr) throws SomeKindOfException{

查看了解更多信息

我会犹豫是否将其设置为选中的异常。a是的。这是真的。忘记了这一点。我会犹豫是否将其设置为选中的异常。a是的。这是真的。忘记了这一点。我永远不会将前提提取到单独的方法中,因为我认为只需向上滚动查看参数如何更方便条件化。你应该用注释将其分开。至少我是这样做的。我永远不会将前提条件提取到单独的方法中,因为我认为向上滚动查看参数是如何条件化的更方便。你应该用注释将其分开。至少我是这样做的。