最适合网络开发者的网站
Java 编程语言。初学者课程

尿素

Java 异常 - 试着抓


Java 异常

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

当发生错误时,Java 通常会停止并生成错误消息。这方面的技术术语是:Java 将抛出 例外 (抛出错误)。


Java 尝试捕获

try 语句允许您定义一个代码块,以便在执行时测试是否存在错误。

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

trycatch 关键词成对出现:

句法

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 语句允许您创建自定义错误。

throw 语句与异常类型Java 中有许多可用的异常类型: ArithmeticException, FileNotFoundException, ArrayIndexOutOfBoundsException, SecurityException, ETC:

例子

如果发生以下情况,则抛出异常 年龄 低于 18 岁(打印“拒绝访问”)。如果年龄达到或超过 18 岁,则打印“允许访问”:

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,你会不是 得到一个异常:

例子

checkAge(20);

输出将是:

Access granted - You are old enough!
亲自尝试 »

通过练习测试自己

锻炼:

插入缺失的部分来处理下面代码中的错误。

 {
  int[] myNumbers = {1, 2, 3};
  System.out.println(myNumbers[10]);
}  (Exception e) {
  System.out.println("Something went wrong.");
}