package day162020072701.day1601;

 /**
* @author liuwenlong
* @create 2020-07-27 09:25:44
*/
@SuppressWarnings("all")
public class Human {
private String name;
private char sex;
private int age; public int getAge() {
return age;
} public void setAge(int age) throws HumanException.AgeException {
if (age > 0 && age < 150) {
this.age = age;
return;
}
throw new HumanException.AgeException("年龄非法"); } public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public char getSex() {
return sex;
} public void setSex(char sex) throws HumanException.SexException {
if (sex == '男' || sex == '女') {
this.sex = sex;
return;
}
throw new HumanException.SexException("性别有误");
} @Override
public String toString() {
return "Human{" +
"name='" + name + '\'' +
", sex=" + sex +
", age=" + age +
'}';
}
}
 package day162020072701.day1601;

 /**
* @author liuwenlong
* @create 2020-07-27 10:47:58
*/
@SuppressWarnings("all")
public class HumanException {
public static class AgeException extends Exception{
private String message; public AgeException(String message) {
this.message = message;
} @Override
public String getMessage() {
return message;
}
} public static class SexException extends Exception{
private String message; public SexException(String message) {
this.message = message;
} @Override
public String getMessage() {
return message;
}
}
}
 package day162020072701.day1601;

 import java.util.Scanner;

 /**
* @author liuwenlong
* @create 2020-07-27 09:29:24
*/
@SuppressWarnings("all")
public class TestHuman {
public static void main(String[] args) {
Scanner input = new Scanner(System.in); Human human = new Human();
human.setName("张三");
System.out.println("姓名:" + human.getName()); boolean flag = false;
while (!flag) {
flag = true;
try {
System.out.println("请输入性别:");
human.setSex(input.next().charAt(0));
System.out.println("性别:" + human.getSex());
System.out.println("请输入年龄:");
human.setAge(input.nextInt());
System.out.println("年龄:" + human.getAge());
} catch (HumanException.SexException e) {
flag = false;
System.out.println(e.getMessage());
} catch (HumanException.AgeException e) {
System.out.println(e.getMessage());
flag = false;
} catch (Exception e) {
System.out.println("出现未知错误!Error!");
flag = false;
} finally {
System.out.println("异常首尾");
}
}
System.out.println(human);
}
}

Java自定义异常的用法的更多相关文章

  1. JAVA的continue用法

    JAVA的continue用法: public class test{ public static void main(String [] args){  for(int i=0;i<=10;i ...

  2. Java Spring AOP用法

    Java Spring AOP用法 Spring AOP Java web 环境搭建 Java web 项目搭建 Java Spring IOC用法 spring提供了两个核心功能,一个是IoC(控制 ...

  3. Java Spring IOC用法

    Java Spring IOC用法 Spring IoC 在前两篇文章中,我们讲了java web环境搭建 和 java web项目搭建,现在看下spring ioc在java中的运用,开发工具为In ...

  4. 四种Java线程池用法解析

    本文为大家分析四种Java线程池用法,供大家参考,具体内容如下 http://www.jb51.net/article/81843.htm 1.new Thread的弊端 执行一个异步任务你还只是如下 ...

  5. JAVA中ArrayList用法

    JAVA中ArrayList用法 2011-07-20 15:02:03|  分类: 计算机专业 |  标签:java  arraylist用法  |举报|字号 订阅     Java学习过程中做题时 ...

  6. oracle 集合变量以及自定义异常的用法

    oracle 集合变量以及自定义异常的用法, 在过程 record_practice 有record变量和自定义异常的用法实例.具体在3284行. CREATE OR REPLACE Package ...

  7. this在java中的用法

    this在java中的用法 1.使用this关键字引用成员变量 作用:解决成员变量与参数或局部变量命名冲突的问题 public class Dog { String name; public Dog( ...

  8. java assert的用法简介【转】

    assert的基本用法 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制,如C,C++和Eiffel等,但是支持的形式不尽相同,有的是通过语言本身.有的是通过库 ...

  9. java Arrays.asList用法

    java Arrays.asList用法 用途 Arrays是java容器相关操作的工具类,asList方法将Array转换为list,是Array和List之间的桥梁. 注意 Arrays.asLi ...

随机推荐

  1. ResNeSt:Split attention

    https://www.cnblogs.com/xiximayou/p/12728644.html 下面是SE和SK这两个网络,兄弟俩很相似 下面是具体的每个cardinal(翻译为枢纽)网络,和SK ...

  2. 【JVM】JVM优化过程全记录

    请大神移步:https://segmentfault.com/a/1190000010510968?utm_source=tuicool&utm_medium=referral 今天看JVM群 ...

  3. Setup Factory 9 打包安装程序过程中提示安装.net4.5、并启用md5加密算法

    1.在Before Installing选项卡中选择Ready to Install,点击Edit进入编辑窗口,切到最后一个选项卡Actions,把判断内容复制进去 -- These actions ...

  4. 手把手教你NLTK WordNet使用方法

    最近看了WordNet,0基础入门,简单记下笔记.因为本身不是学自然语言处理的,好多名词不是特别清楚,现有的博客读的晕乎乎,所以重新写了这个,理清思路.除了行文中提到的链接,其他几个有用的参考链接如下 ...

  5. 经典的 Fork 炸弹解析

    原文出处: saymagic Jaromil 在 2002 年设计了最为精简的一个Linux Fork炸弹,整个代码只有13个字符,在 shell 中运行后几秒后系统就会宕机: ::(){:|:&am ...

  6. fatal error: glib.h: No such file or directory

    在学习BLE bluez的时候,做了一个测试程序,看到gatttool.c下面有一个glib解析命令行的功能,想移植到自己的程序接口中,但是添加了#include <glib.h>后,出现 ...

  7. 使用docker搭建redis集群

    创建网卡 docker network create redis --subnet 172.20.0.0/ --gateway 172.20.0.1 通过脚本创建6个redis配置 for i in ...

  8. Java 8新特性(三):Optional类

    在上一篇介绍Stream流式数据处理的文章中提到了Optional类,这是Java 8新增的一个类,用以解决程序中常见的NullPointerException异常问题.本篇文章将详细介绍Option ...

  9. 图解 K8s 核心概念和术语

    我第一次接触容器编排调度工具是 Docker 自家的 Docker Swarm,主要解决当时公司内部业务项目部署繁琐的问题,我记得当时项目实现容器化之后,花在项目部署运维的时间大大减少了,当时觉得这玩 ...

  10. 《神经网络的梯度推导与代码验证》之CNN的前向传播和反向梯度推导

    在FNN(DNN)的前向传播,反向梯度推导以及代码验证中,我们不仅总结了FNN(DNN)这种神经网络结构的前向传播和反向梯度求导公式,还通过tensorflow的自动求微分工具验证了其准确性.在本篇章 ...