首页 > 编程语言 >【JavaSE】异常(异常体系、异常处理方式、自定义异常)

【JavaSE】异常(异常体系、异常处理方式、自定义异常)

时间:2023-12-02 22:34:59浏览次数:34  
标签:name 自定义 age System Student JavaSE 异常 public String

异常介绍

异常体系

一定要能阐述异常的体系结构!
异常类的祖先类:Throwable
所有的异常都是一个类,如果不清楚可以在API帮助文档查询

运行时异常:编译时没有错误,运行时可能会出错,通常是代码不严谨导致的
编译时异常(不包含语法错误):主要起提醒作用,需要在运行之前给出解决方式

异常处理方式

异常的默认处理流程

异常处理方式的选择

方式1:try catch捕获异常

方式2:throws抛出异常

throw和throws的区别

Student.java
package com.EveX.domain;

public class Student {
    String name;
    int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) throws Exception {
        if(age > 120 || age < 0) {
            throw new Exception("输入年龄范围有误,请重新输入");
        }
        this.age = age;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }
}

ExceptionDemo.java
package com.EveX.exception.handle;

import com.EveX.domain.Student;

import java.util.Scanner;

public class ExceptionDemo {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        Student stu = new Student();
        System.out.println("请输入姓名:");
        String name = in.nextLine();
        stu.setName(name);
        System.out.println("请输入年龄:");
        int age = 0;

        while (true) {
            try {
                age = Integer.parseInt(in.nextLine());
                stu.setAge(age);
                break;
            } catch (NumberFormatException e) {
                System.out.println("NumberFormatException,请重新输入整数:");
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }


        System.out.println(stu);

    }
}

自定义异常

StudentAgeException.java
package com.EveX.exception;

public class StudentAgeException extends RuntimeException{
    public StudentAgeException() {
    }

    public StudentAgeException(String message) {
        super(message);
    }
}
Student.java
package com.EveX.domain;

import com.EveX.exception.StudentAgeException;

public class Student {
    String name;
    int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        setAge(age);
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) throws StudentAgeException {
        if(age > 120 || age < 0) {
            throw new StudentAgeException("输入年龄范围有误,请重新输入");
        }
        this.age = age;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }
}

TryCatchDemo.java
package com.EveX.exception.handle;

import com.EveX.domain.Student;
import com.EveX.exception.StudentAgeException;

import java.util.Scanner;

public class TryCatchDemo {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        Student stu = new Student();
        System.out.println("请输入姓名:");
        String name = in.nextLine();
        stu.setName(name);
        System.out.println("请输入年龄:");
        int age = 0;

        while (true) {
            try {
                age = Integer.parseInt(in.nextLine());
                stu.setAge(age);
                break;
            } catch (NumberFormatException e) {
                System.out.println("NumberFormatException,请重新输入整数:");
            } catch (StudentAgeException e) {
                System.out.println(e.getMessage());
            }
        }

        System.out.println(stu);

    }
}

异常的细节

标签:name,自定义,age,System,Student,JavaSE,异常,public,String
From: https://www.cnblogs.com/Eve7Xu/p/17871942.html

相关文章

  • java: 未报告的异常错误java.io.UnsupportedEncodingException; 必须对其进行捕获或声
    原问题代码:/**MD5编码相关的类@authorwangjingtao*/publicclassMD5{//首先初始化一个字符数组,用来存放每个16进制字符privatestaticfinalchar[]hexDigits={'0','1','2','3','4','5','6','7'......
  • 【JavaSE】时间API
    JDK8版本之前的时间API(了解)Data类SimpleDateFormat类SimpleDateFormat类指定格式查API帮助文档即可SimpleDateFormatDemo.javaimportjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;publicclassSimpleDateFormatDemo{pu......
  • 使用样式表和 rcParams字典自定义 Matplotlib属性和样式
    3种方式自定义Matplotlib的属性和样式1.运行时通过rcParams字典动态设置2.使用样式表3. 更改matplotlibrc文件在运行时设置rcParams优先于样式表、样式工作表优先于文件matplotlibrc即1>2>31. 运行时通过rcParams字典动态设置通过字典matplotlib.rcParams,动态修改......
  • 学习笔记4:JavaSE & API(网络编程 & 多线程)
    1、java.net.Socket:(1)定义:Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过它获取两个流(一个输入一个输出),然后使用这两个流的读写操作完成与服务端的数据交互。(2)方法getInputStream():获取输入流,返回值是InputStream的一个子类实例。ge......
  • vue 富文本编辑器 wangeditor 自定义上传图片 以及 解决 复制粘贴 word 没有图片的情
    本人比较喜欢用这一款编辑器,官方文档:(用于VueReact|wangEditor),很详细。我主要来说说怎么使用customPaste自定义粘贴的,怎么解决复制粘贴word,没有图片的情况。主要是关于wangeditor在vue2的使用效果图:先把完整代码放这里:<template><divclass="addpost_course"......
  • vue3使用富文本编辑器wangEditor 5,增加自定义下拉框,并动态改变下拉框内容
    官方资料wangEditor官网效果展示准备工作这里按照wangEditor官网提供的Vue3Demo操作就行,下面的内容可以直接跳过安装yarnadd@wangeditor/editor#或者npminstall@wangeditor/editor--saveyarnadd@wangeditor/editor-for-vue@next#或者npminstall@w......
  • SpringBoot自定义注解导出Excel
    先定义一个注解importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;@Retention(RetentionPolicy.RUNTIME)public@interfaceExcelHander{Stringvalue()default"";StringlinkFiled()default"";Cel......
  • 在LiteCVR视频调阅中全屏播放,画面显示异常的排查与解决
    第三代视频监控系统是指以前端网络视频为代表的全数字视频监控系统,视频从前端图像采集、传输即为数字信号,并以网络为传输媒介,实现视频在网上的传输,并通过设在网上相应的功能控制主机来实现对整个监控系统的浏览、控制与存储。有技术人员在日常排查中发现:在LiteCVR的视频调阅模块中,......
  • 【JavaSE】一些常见API(Object、Objects、Math、System、BigDecimal、包装类、Arrays)
    Object类Object类介绍toString方法直接println(对象名),默认会自动调用(对象名.toString),而.toString默认是返回地址信息->全类名(包名+类名)@地址的十六进制哈希值,因此如果println(对象名)控制台没有输出地址值,说明该类一定重写了Object类的toString方法,比如String类和Arr......
  • 雷池 WAF(SafeLine)异常处理:Web需要绑定动态口令,系统异常崩溃
    说明问题发生在2023年12月1日,突然发现安装的雷池WAFWeb需要重新绑定动态口令,但扫描二维码无法绑定。当即检查防护站点服务正常,PVEShell访问正常。查看Issues·chaitin/SafeLine·GitHub,发现已经有人提交了Bug。[Bug]从3.13开始雷池tengine就疯狂报错了,完全不......