Java 异常 - Try...Catch
Java 异常
在执行 Java 代码时,可能会发生各种错误:程序员的编码错误、错误输入导致的异常或其他不可预见的情况。
当发生错误时,Java 通常会停止并生成错误消息。用技术术语讲就是:Java 将抛出异常(抛出错误)。
Java try 和 catch
try
语句允许您定义要在执行时测试错误的代码块。
如果 try 块中发生错误,catch
语句允许您定义要执行的代码块。
try
和 catch
关键字成对出现:
语法
try { // 要尝试的代码块 } catch(Exception e) { // 处理错误的代码块 }
请思考以下例子:
将产生错误,因为 myNumbers[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("出错了。"); } } }
输出将是:
出错了。
Finally
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("出错了。"); } finally { System.out.println("'try catch' 已结束。"); } } }
输出将是:
出错了。 'try catch' 已结束。
throw 关键字
throw
语句允许您创建自定义错误。
throw
语句可与异常类型一同使用。Java 中有许多可用的异常类型:
ArithmeticException
FileNotFoundException
ArrayIndexOutOfBoundsException
SecurityException
实例
如果年龄低于 18 岁,则抛出异常(打印 "拒绝访问")。如果年龄为 18 岁或以上,则打印 "允许访问":
public class Main { static void checkAge(int age) { if (age < 18) { throw new ArithmeticException("拒绝访问 - 您需要至少满 18 岁。"); } else { System.out.println("允许访问 - 您的年纪够大!"); } } public static void main(String[] args) { checkAge(15); // 将年龄设置为 15(低于 18 ...) } }
输出将是:
Exception in thread "main" java.lang.ArithmeticException: 拒绝访问 - 您需要至少满 18 岁。 at Main.checkAge(Main.java:4) at Main.main(Main.java:12)
如果年龄是 20 岁,则不会出现异常:
实例
checkAge(20);
输出将是:
允许访问 - 您的年纪够大!