📜  Java异常-编程示例(1)

📅  最后修改于: 2023-12-03 14:43:01.022000             🧑  作者: Mango

Java异常 - 编程示例

什么是异常?

Java中的异常是指程序执行过程中的错误或意外情况,它们会打断程序的正常运行。通常,这些异常可以通过代码来捕获并处理,以避免程序崩溃或产生意外行为。

异常的分类

Java中的异常可以分为两大类:

  • 检查型异常(Checked Exception) - 这种异常需要程序员显式地捕获和处理,否则代码将无法通过编译。例如,FileNotFound Exception(文件未找到异常)。

  • 非检查型异常(Unchecked Exception) - 这种异常通常是由程序错误,例如除零操作或空指针引用导致的。这些异常可以不显式处理,但如果不处理,它们将导致程序崩溃。例如,ArithmeticException(算术异常)或NullPointerException(空指针异常)。

捕获异常

在Java中,我们可以使用 try-catch 块来捕获异常。try块包含我们希望执行的代码,如果抛出异常,它会转到catch块。

以下是一个示例程序,其中 try-catch 块用于捕获输入非数字值导致的异常:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter a number: ");

        try {
            int number = scanner.nextInt();
            System.out.println("You have entered: " + number);
        } catch (Exception e) {
            System.out.println("Invalid input. Please enter a number.");
        }
    }
}

在这个例子中,我们使用 Scanner 类向用户请求输入数字。如果用户输入了非数字的文本,则输入操作将导致异常。在 try 块中,我们将用户输入转换为整数。如果这个转换引发异常,程序将跳到 catch 块,输出错误信息。

创建自定义异常

有时候,我们可能希望创建自定义异常类来表示特定类型的错误或意外情况。我们可以通过从 Exception 类或其子类派生,并提供适当的构造函数来实现这一点。

以下是一个自定义异常类的示例:

public class InvalidAgeException extends Exception {
    public InvalidAgeException(String message) {
        super(message);
    }
}

这个类继承了Exception类并定义了一个构造函数。在此示例中,我们创建了一个名为 InvalidAgeException 的异常类,它接受一个字符串消息并将其传递给父类的构造函数。

在实际代码中,我们可以使用此自定义异常类来表示年龄无效的错误:

public class Main {
    public static void main(String[] args) {
        try {
            int age = -10;
            if (age < 0) {
                throw new InvalidAgeException("Age cannot be negative");
            }
        } catch (InvalidAgeException e) {
            System.out.println(e.getMessage());
        }
    }
}

在这个例子中,如果年龄小于0,则我们抛出了一个InvalidAgeException异常,并在catch块中输出错误消息。

结论

Java中的异常是编程中的一个重要主题,程序员应该熟练掌握异常的概念和处理方法。通过本文中的示例和原则,希望能够帮助您更好地理解Java中的异常。