异常处理练习:

给类的属性身份证号码id设置值,当给定的值长度为18时,赋值给id,当值长度不为18时,抛出IllegalArgumentException异常,然后捕获和处理异常。请编写程序。

ans:

为了实现这个功能,我们需要定义一个 id 属性,添加一个设置 id 的方法(通常叫 setId),并在其中进行长度判断。

public class Test {
    private String id;

    // 自定义异常类,记得加上 static
    static class IllegalArgumentException extends Exception {
        public IllegalArgumentException(String message) {
            super(message);
        }
    }

    // 设置 id 的方法
    public void setId(String id) throws IllegalArgumentException {
        if (id != null && id.length() == 18) {
            this.id = id;
            System.out.println("身份证号码设置成功: " + id);
        } else {
            // 抛出异常
            throw new IllegalArgumentException("身份证号码长度必须为 18 位!");
        }
    }

    public static void main(String[] args) {
        Test t = new Test();
        
        // 捕获和处理异常
        try {
            t.setId("123456789012345678"); // 正确的情况
            t.setId("123");                // 错误的情况,会触发异常
        } catch (IllegalArgumentException e) {
            System.err.println("捕获到异常: " + e.getMessage());
        }
    }
}

运行结果:

身份证号码设置成功: 123456789012345678
捕获到异常: 身份证号码长度必须为 18 位!

代码要点提示:

  1. throw 与 throws:在 setId 方法声明时使用 throws 表示该方法可能会抛出异常;在方法内部使用 throw 关键字手动触发异常。
  2. try-catch 块:在调用可能抛出异常的方法时,必须使用 try-catch 将其包围,这样程序才不会在遇到非法输入时直接崩溃。
  3. System.err:这会以红色文字(在大多数终端中)打印错误信息,非常适合用来标注异常情况。

更多推荐