在执行Java代码时,可能会出现不同的错误:程序员编写的代码错误、由于错误输入而导致的错误或其他不可预见的事情。
当发生错误时,Java 通常会停止并生成错误消息。技术术语是:Java 将抛出一个例外(抛出错误)。
这个try
语句允许您定义要在执行时测试错误的代码块。
这个catch
语句允许您定义在 try 块中发生错误时要执行的代码块。
这个try
和catch
关键字成对出现:
try {
// Block of code to try }
catch(Exception e) {
// Block of code to handle errors }
考虑以下示例:
这会产生错误,因为我的号码[10]不存在。
public class Main {
public static void main(String[ ] args) {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); // error!
}
}
输出将是这样的:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Main.main(Main.java:4)
如果出现错误,我们可以使用try...catch
捕获错误并执行一些代码来处理它:
public class Main {
public static void main(String[ ] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
}
}
}
输出将是:
Something went wrong.
这个finally
语句允许您在之后执行代码try...catch
,无论结果如何:
public class Main {
public static void main(String[] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
} finally {
System.out.println("The 'try catch' is finished.");
}
}
}
输出将是:
Something went wrong.
The 'try catch' is finished.
这个throw
语句允许您创建自定义错误。
这个throw
语句与一个一起使用异常类型。 Java 中有多种可用的异常类型:ArithmeticException
,FileNotFoundException
,ArrayIndexOutOfBoundsException
,SecurityException
, ETC:
如果出现以下情况则抛出异常年龄低于 18(打印 "Access denied")。如果年龄为 18 岁或以上,请打印 "Access granted":
public class Main {
static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("Access denied - You must be at least 18 years old.");
}
else {
System.out.println("Access granted - You are old enough!");
}
}
public static void main(String[] args) {
checkAge(15); // Set age to 15 (which is below 18...)
}
}
输出将是:
Exception in thread "main" java.lang.ArithmeticException: Access denied - You must be at least 18 years old.
at Main.checkAge(Main.java:4)
at Main.main(Main.java:12)
如果年龄20岁的时候,你会不是得到一个例外:
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!