JAVA程序设计 实验二 异常处理

该实验报告展示了如何在JavaSwing环境中创建一个登录GUI,通过异常处理机制进行密码合法性验证。用户输入的密码需为4-6位数字,否则会抛出自定义异常PasswordFormatException或PasswordFormatException2。实验加强了对异常处理流程的理解,并应用了Box布局来构建图形界面。
摘要由CSDN通过智能技术生成

《Java程序设计》实 验 报 告(二)

实验名称: 异常处理

实验地点: 10-413

所使用的工具软件及环境:

环境:Windows 8.1;jdk 1.8;

工具:eclipse

实验目的:

了解异常处理机制,掌握异常处理的设计方法。

实验内容:

用户自定义一个异常,编程创建并抛出某个异常类的实例。运行该程序并观察执行结果。

例如:用户密码的合法化验证。

要求密码有4-6个数字组成。若长度不落在这个范围或不是有数字组成。抛出自己的异常。

要求:

1.图形界面,面向对象编程。

2.异常定义,抛出,捕捉三个流程。

 

源程序:

//LoginGUI.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class LoginGUI extends JFrame {

    private JTextField usernameField;

    private JPasswordField passwordField;

    public LoginGUI() {

        super("登录界面");

        // 创建一个垂直居中的Box容器

        Box box = Box.createVerticalBox();

        add(box);

        //box.add(Box.createVerticalStrut(50)); // 添加50个像素的垂直空白间隔

        box.add(new JLabel("用户名:"));

        box.add(Box.createVerticalStrut(10)); // 添加10个像素的垂直空白间隔

        usernameField = new JTextField(20);

        box.add(usernameField);

        box.add(Box.createVerticalStrut(20)); // 添加20个像素的垂直空白间隔

        box.add(new JLabel("密码:"));

        box.add(Box.createVerticalStrut(10)); // 添加10个像素的垂直空白间隔

        passwordField = new JPasswordField(20);

        passwordField.setEchoChar((char)0);

        box.add(passwordField);

        box.add(Box.createVerticalStrut(30)); // 添加30个像素的垂直空白间隔

        JButton loginButton = new JButton("登录");

        loginButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                try {

                    login();

                } catch (IllegalArgumentException ex) {

                    JOptionPane.showMessageDialog(LoginGUI.this, ex.getMessage(), "错误01", JOptionPane.ERROR_MESSAGE);

                } catch (PasswordFormatException ex) {

                    JOptionPane.showMessageDialog(LoginGUI.this, ex.getMessage(), "错误02", JOptionPane.ERROR_MESSAGE);

                } catch (PasswordFormatException2 ex) {

                    JOptionPane.showMessageDialog(LoginGUI.this, ex.getMessage(), "错误03", JOptionPane.ERROR_MESSAGE);

                }

            }

        });

        box.add(loginButton);

        pack();

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setLocationRelativeTo(null); // 居中显示窗口

        setVisible(true);

    }

    private void login() throws IllegalArgumentException, PasswordFormatException, PasswordFormatException2 {

        String username = usernameField.getText();

        String password = new String(passwordField.getPassword());

        if (username.isEmpty() || password.isEmpty()) {

            throw new IllegalArgumentException("用户名和密码不能为空!");

        }

        if (password.length() < 4 || password.length() > 6) {

            throw new PasswordFormatException("密码必须为4-6位!");

        }

        if (!password.matches("[0-9]+")) {

            throw new PasswordFormatException2("密码必须由数字组成!");

        }

        JOptionPane.showMessageDialog(this, "登录成功, " + username + "!");

    }

    public static void main(String[] args) {

        new LoginGUI();

    }

}

//PasswordFormatException.java

class PasswordFormatException extends Exception {

    public PasswordFormatException(String message) {

        super(message);

    }

}

//PasswordFormatException2.java

class PasswordFormatException2 extends Exception {

    public PasswordFormatException2(String message) {

        super(message);

    }

}

实验结果:

以下是一个JAVA图形界面程序,要求用户输入用户名和密码,并进行长度和格式的验证。如果用户名或密码为空,将抛出IllegalArgumentException异常。如果密码不是4-6位数字,将抛出自定义的异常类PasswordFormatException。如果密码不是由数字组成,将抛出自定义的异常类PasswordFormatException2。

 

 

 

 

 

收获与体会:

本次实验编写的程序中,定义了一个LoginGUI类,该类继承自JFrame类,并包含一个用户名文本框、一个密码文本框和一个登录按钮。当用户点击登录按钮时,将调用login方法,该方法将检查用户名和密码是否为空,并且密码是否为4-6个数字和是否为数字组成。如果验证失败,将抛出自定义的异常类PasswordFormatException、PasswordFormatException2或IllegalArgumentException。在登录按钮的监听器中,捕获这些异常并显示错误消息。如果没有异常,将显示登录成功的欢迎消息。

总而言之,通过实验实践,我学习了解异常处理机制,掌握异常处理的设计方法理解了异常定义,抛出,捕捉三个流程除此之外,我还学习到了用Box布局swing界面,如果要将图形化界面的内容居中,可以使用Java Swing中的Box类。Box类提供了Box.createVerticalBox()和Box.createHorizontalBox()方法,可以创建垂直和水平的Box容器,用于组织和排列Swing组件,对以后JAVA的深入学习有了更多的帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值