我写了一个检查各种条件的代码。
如果它符合条件它会做它应该做的事情,否则我希望它抛出一个 异常。
有没有特殊的语法?否则编译器要我返回任何数组, 由于前提条件,我不想这样做。
以下是我的代码的一部分:
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");
}
}
}
答案 0 :(得分:9)
抛出异常的方法是
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;
(事实上,我甚至更愿意将前置条件检查提取到一个单独的方法中 - 但我把它留给你。)
答案 1 :(得分:5)
throw new IllegalArgumentException(
"Please enter a legal array which matches the pre- conditions")
java.langIllegalArgumentException
是RuntimeException
,这意味着某些参数不是预期的。由于它是未经检查的异常,因此您的调用者不会被强制以任何方式处理它(而不是检查异常)
答案 2 :(得分:3)
你可以自己抛出异常。也许最好的方法是定义一个自定义异常,然后抛出它。如果您不想这样做,请使用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);
}
}
答案 3 :(得分:2)
如果异常是关于你的论点是非法的,那么抛出IllegalArgumentException:
throw new IllegalArgumentException("descriptive message")
答案 4 :(得分:2)
您可能需要查看Oracle's tutorials on exceptions。
要抛出异常,请使用throw
关键字。
要标记方法可能引发异常,请使用throws
关键字,例如
public static void foo() throws SomeException
答案 5 :(得分:1)
您可以使用此行抛出异常
throw new SomeKindOfException("Exception description"); // or any other exception, also yours...
但是你需要在方法声明中指定:
public static int [] code(int[]arr) throws SomeKindOfException{
有关详情,请参阅Oracle tutorial