Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Java 教程

Java 主页 Java 简介 Java 入门 Java 语法 Java 输出 Java 注释 Java 变量 Java 数据类型 Java 类型转换 Java 运算符 Java 字符串 Java 数学 Java 布尔值 Java If...Else Java Switch Java While 循环 Java For 循环 Java Break/Continue Java 数组

Java 方法

Java 方法 Java 方法参数 Java 方法重载 Java 范围 Java 递归

Java 类

Java OOP Java 类/对象 Java 类属性 Java 类方法 Java 构造函数 Java 修饰符 Java 封装 Java 包 / API Java 继承 Java 多态 Java 内部类 Java 抽象 Java 接口 Java 枚举 Java 用户输入 Java 日期 Java ArrayList Java LinkedList Java 列表排序 Java HashMap Java HashSet Java 迭代器 Java 包装类 Java 异常 Java 正则表达式 Java 线程 Java Lambda Java 高级排序

Java 文件处理

Java 文件 Java 创建/写入文件 Java 读取文件 Java 删除文件

Java 如何做

加两个数字 统计单词数量 反转字符串 数组元素之和 将字符串转换为数组 排序数组 计算数组平均值 查找最小元素 ArrayList 循环 HashMap 循环 循环枚举 矩形面积 偶数或奇数 正数或负数 平方根 随机数

Java 参考

Java 参考 Java 关键字 Java 字符串方法 Java 数学方法 Java 输出方法 Java 数组方法 Java ArrayList 方法 Java LinkedList 方法 Java HashMap 方法 Java Scanner 方法 Java 迭代器方法 Java 错误和异常

Java 示例

Java 示例 Java 编译器 Java 练习 Java 测验 Java 服务器 Java 证书


Java 异常 - Try...Catch


Java 异常

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

当发生错误时,Java 通常会停止并生成错误消息。此问题的技术术语是:Java 会抛出异常(抛出错误)。


Java try 和 catch

try 语句允许您定义要测试是否有错误的代码块,同时正在执行该代码块。

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

trycatch 关键字成对出现

语法

try {
  //  Block of code to try
}
catch(Exception e) {
  //  Block of code to handle errors
}

考虑以下示例

这将生成错误,因为 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)

注意: 当你尝试访问一个不存在的索引号时,会发生 ArrayIndexOutOfBoundsException 错误。

自己尝试 »

如果发生错误,我们可以使用 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 语句允许你执行代码,在 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.");
    }
  }
}

输出将是

出错了。
'try catch' 已经完成。
自己尝试 »


throw 关键字

throw 语句允许你创建自定义错误。

throw 语句与异常类型一起使用。Java 中有许多可用的异常类型:ArithmeticExceptionFileNotFoundExceptionArrayIndexOutOfBoundsExceptionSecurityException

示例

如果age小于 18,则抛出异常(打印 "Access denied")。如果 age 为 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)
自己尝试 »

如果age为 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.");
}

开始练习


错误和异常类型参考

要查看不同错误和异常类型的列表,请访问我们的 Java 错误和异常类型参考




×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.