编写程序模拟用户注册

1、程序开始执行的时候,提示用户输入“用户名”和“密码”信息

2、输入信息之后,后台JAVA程序模拟用户注册

3、注册时用户名要求长度在【6-14】之间,小于或者大于都表示异常

注意:

完成注册的方法放到一个单独的类中

异常类需要自定义

经验:

引用等于null的这个判断最好放到所有条件的最前面,因为短路与的执行有可能会造成空指针异常

username == null 不如写成 null == username

username.equals("abc") 不如写成 "abc".equals(username)

代码演示:

创建自定义异常类:

package com.lbj.javase.exceptionTest.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.exceptionTest.homework* @date 2021/3/26 19:03* @Copyright 公司*/
public class IllegalNameException extends Exception{public IllegalNameException() {}public IllegalNameException(String message) {super(message);}
}

创建用户类:

package com.lbj.javase.exceptionTest.homework;/***用户业务类,处理用户相关的业务:*例如:登录、注册等功能*/
public class UserService {/*** 用户注册* @param username 用户名* @param password 密码* @throws IllegalNameException 当用户名为null,或者用户名长度小于6,大于14,会出现该异常*/public void register(String username,String password) throws IllegalNameException {if(null == username || username.length()<6 || username.length()>14){IllegalNameException e=new IllegalNameException("您输入的用户名不合法,长度必须在【6-14】位之间");throw e;}System.out.println("您注册成功,欢迎:"+username);}
}

创建测试类:

package com.lbj.javase.exceptionTest.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.exceptionTest.homework* @date 2021/3/26 19:54* @Copyright 公司*/
public class Test {public static void main(String[] args) {// 创建对象UserService userService=new UserService();
//        try {
//            userService.register("小明","1234567");
//        } catch (Illegal NameException e) {
//            e.printStackTrace();
//        }// 用户名和密码不从控制台接收的时候try {userService.register(null,"1234567");} catch (IllegalNameException e) {System.out.println(e.getMessage());//e.printStackTrace();}}
}

测试结果:

源码分析:

一步一步可以通过看源码得出e.getMassage的信息到底从哪里来

按住ctrl并单击进入

下一步:

下一步:

(message传给detailMessage)

detailMessage其实是一个实例变量

其实就是将实例化后的异常类中的括号中描述的异常信息,传递给detailMassage

然后e.getMessage就是将detailMessage调用出来而已

这就是此异常类的一次实例,其中的源码意思已经非常清晰

JAVA进阶开发之(异常练习题)相关推荐

  1. JAVA进阶开发之(异常类)

    保姆级别的异常类教学(附代码) 目录 1.什么是异常: 2. java语言中异常以什么形式存在的呢? 3.异常对应的现实生活中是怎样的? 4.异常处理机制 5.异常处理的具体方式 6.运行时异常编写程 ...

  2. JAVA进阶开发之(数组练习题)

    1.题目: 写一个Army类,代表一支军队 这个类有一个属性,Weapon[ ]  w  数组,用来存储该军队所有武器 Army类提供一个构造方法,构造方法里面通过传递一个int类型的参数来限定该类所 ...

  3. JAVA进阶开发之(二维数组)

    1.二维数组其实是一个特殊的一维数组,特殊在这个二维数组中每一个元素是一个一维数组 2.就是一维数组里面都是一样的元素,二维数组就是把元素换成了一维数组 3.实际开发中,使用最多的就是一维数组,二维数 ...

  4. java接口开发 全局异常,全局异常处理

    习惯在controller中进行try catch 异常处理了,但其实如果不做异常处理的话,也可以采取全局异常处理的方式进行解决,同样方便统一使用.维护,具体实现如下: import javax.se ...

  5. JAVA进阶开发之(内部类概述)

    匿名内部类(相当于此类没有名字): 1.什么是内部类:在类的内部又定义了一个新的类 2.内部类的分类: 静态内部类:类似静态变量 实例内部类:类似实例变量 局部内部类:类似局部变量 3.使用内部类编写 ...

  6. java进阶开发-----Set集合、Map集合(接java集合)

    (一).Set系列集合 Set系列集合特点 无序:存取顺序不一致 不重复:可以去除重复 无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素. Set集合实现类特点 Ha ...

  7. Java进阶——异常

    异常概述 什么是异常,java提供异常处理机制有什么用? 以下程序执行过程中发生了不正常的情况,而这种不正常的情况叫做:异常 java语言是很完善的语言,提供了异常的处理方式,以下程序执行过程中出现了 ...

  8. java开发常见异常_最常见的Java异常及其对Java开发人员的评价

    java开发常见异常 我知道我说过在完成视频之前我不会发帖,但这一直困扰着我. 至于视频的更新,我有些懒散,有些忙碌,但是我已经准备好记录第一集,这是我第一次有机会,而且我不需要太多的编辑. 无论如何 ...

  9. 【02】Java进阶:09-冒泡排序、选择排序、二分查找、异常、异常的产生和处理、自定义异常、多线程

    day09[排序算法.异常.多线程基础] 今日内容 冒泡排序 选择排序 二分查找 异常处理 多线程基础 教学目标 能够理解冒泡排序的执行原理 能够理解选择排序的执行原理 能够理解二分查找的执行原理 能 ...

最新文章

  1. 景切换的时候加上遮罩
  2. 福布斯评科技未来五大趋势:电脑消失融入生活时间
  3. H5之audio标签放音兼容所有浏览器方法
  4. scala 基础十一 scala 中的trait特质
  5. 42 CO配置-控制-产品成本控制-成本对象控制-实际成本核算/物料分类帐-激活实际成本核算
  6. Android APP开发需求文档范本
  7. python重定向网页_【Python网页分析】httplib库的重定向处理
  8. response.getWriter().write()与out.print()的区别
  9. linux重启配置文件,rEFInd启动管理器配置文件详解
  10. CCF202006-4 1246【矩阵快速幂】(100分题解链接)
  11. VSCODE+MINGW配置vulkan开发环境
  12. windows查看本机的IP地址
  13. python实现栅栏密码加解密
  14. php大马的使用教程,一php大马,值得研究
  15. Python3.5学习之旅——day5
  16. 计算机硬盘存贮量单位,硬盘存储计量单位KB、MB、GB大小换算
  17. java word jar包_处理word的poi的jar包
  18. 规模再创新高!新能源汽车蓝海谁主沉浮
  19. 数学分析(7): 微分中值定理
  20. macos支持exfat吗_你需要黑苹果吗?

热门文章

  1. JMX学习笔记(一)-MBean
  2. 每天看一片代码系列(三):codepen上一个音乐播放器的实现
  3. 网站架构之缓存应用(摘录)
  4. Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
  5. linux标准I/O——按对象输入和输出
  6. Leetcode--2. 两数相加
  7. python调用大漠找图_[教程贴]按键精灵调用大漠插件后台找图示例
  8. 烽火服务器怎么进入bios系统,装机高手告诉你如何进入bios
  9. mysql key buffer_mysql 开发进阶篇系列 16 MySQL Server(myisam key_buffer)
  10. jq获取id的名称_查找 Linux 发行版名称、版本和内核详细信息 | Linux 中国