《Java程序设计》实 验 报 告(二)--异常处理

一、实验目的

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

二、实验内容

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

例:用户密码的合法化验证。
要求密码有4-6个数字组成。若长度不落在这个范围或不是有数字组成。抛出自己的异常。
要求:
1.面向对象编程。
2.异常定义,抛出,捕捉三个流程。

三、源程序

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;

public class HandleException {
    private JFrame jFrame;
    private JTextField user;
    private JTextField pwd;
    private JLabel hint;
    private JButton register;
    private Image image;

    public static void main(String[] args) {
        HandleException handleException = new HandleException();
        handleException.jFrame.setVisible(true);
    }

    public HandleException(){
        initView();
    }

    private void initView(){
        jFrame = new JFrame("************");
        //设置图标
        URL url =getClass().getResource("/res/icon.jpg");
        image = new ImageIcon(url).getImage();
        jFrame.setIconImage(image);
        //不允许更改大小
        jFrame.setResizable(false);
        //指定位置大小
        jFrame.setBounds(100,100,422,310);
          jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        /**获取窗体的面板容器**/

        Container container = jFrame.getContentPane();
        //设置布局为null
        container.setLayout(null);
        container.setBackground(new Color(255,239,213));

        /**添加提示标签和账户输入框**/

        user = new JTextField();
        user.setBounds(175,79,100,20);
        user.setColumns(10);
        container.add(user);
        //标签
        JLabel username = new JLabel("username:");
        username.setBounds(92,79,100,20);
        container.add(username);

        /**添加提示标签和密码输入框**/

        pwd = new JTextField();
        pwd.setBounds(175,139,100,20);
        pwd.setColumns(10);
        container.add(pwd);
        JLabel password = new JLabel("password:");
        password.setBounds(92,139,100,20);
        container.add(password);

        /**添加异常显示标签**/

        hint = new JLabel("Welcome to register!(●ˇ∀ˇ●)");
        hint.setBounds(107,238,300,20);
        container.add(hint);

        /**添加注册按钮**/

        register = new JButton("Register");
        register.setBounds(130,190,100,20);
        //点击事件
        register.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                try {
                    detection();
                    hint.setText("Register Successfully");
                } catch (MyException e) {
                    if (e.getFlag() == 1){
                        hint.setText("Please use 4-6 digit numeric password");
                    }else if (e.getFlag() == 2){
                        hint.setText("The password length is 4-6");
                    }else if (e.getFlag() == 3){
                        hint.setText("Use only numeric passwords");
                    }
                    e.printStackTrace();
                }
            }
        });
        container.add(register);
    }

    /**
     * 判定密码并抛出异常
     * @throws MyException
     */
    private void detection()throws MyException{
        String string = pwd.getText().toString();
        if (!isNumeric(string) && ((string.length()<4) || (string.length()>6))){
            throw new MyException(1);
        }else if ((string.length() > 6 || string.length() < 4)){
            throw new MyException(2);
        }else if (!isNumeric(string)){
            throw new MyException(3);
        }
    }

    /**
     * 检测是否全为数字
     * @param s
     * @return
     */
    private boolean isNumeric(String s){
        for (int i=0;i<s.length();++i){
            if (!Character.isDigit(s.charAt(i))){
                return false;
            }
        }
        return true;
    }

}

/**
 * 自定义异常类
 */
class MyException extends Exception {
    private int flag;
    public MyException(int flag){
        super();
        this.flag = flag;
    }

    public void setFlag(int flag) {
        this.flag = flag;
    }

    public int getFlag() {
        return flag;
    }
}

四、实验结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值