Java 异常 - Try...Catch

Java 异常

在执行 Java 代码时,可能会发生各种错误:程序员的编码错误、错误输入导致的异常或其他不可预见的情况。

当发生错误时,Java 通常会停止并生成错误消息。用技术术语讲就是:Java 将抛出异常(抛出错误)。

Java try 和 catch

try 语句允许您定义要在执行时测试错误的代码块。

如果 try 块中发生错误,catch 语句允许您定义要执行的代码块。

trycatch 关键字成对出现:

语法

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);

输出将是:

允许访问 - 您的年纪够大!

亲自试一试