• 异常--自定义异常概述


    一、自定义异常概述

    1、为什么需要自定义异常

    我们学习了异常体系,了解到了Java中有很多种异常类,每个异常类分别表示着某一种具体的
    异常情况,但是在实际开发中总存在一些SUN公司没有定义好的异常情况,所以我们需要根据自己
    业务的异常情况来定义具体的异常类。例如年龄负数问题,考试成绩负数问题等等,那么这些问题
    我们能不能自己定义异常呢?

    2、自定义异常如何定义

    分析业务,如果你的业务需要的是一个一旦出现就停止程序的异常,那么你就需要一个运行
    时异常,如果你的业务需要的是记录某个异常信息,或者是用来提示的话,那么你需要的是一个检
    查时异常:
    ➢自定义一个编译期异常:自定义类并继承于java.lang.Exception。
    ➢自定义一个运行时期的异常类:自定义类并继承于java.lang.RuntimeException。
    然后重写无参和有参构造函数!

    二、检查时异常demo

    模拟用户注册出现用户名重复的异常错误

    public class UserCheckedExceptionDemo {
    	//模拟数据库中已经存在的三个用户名
    	private static String [] names = {"bill","hill","jill"};
    	public static void main(String[] args) {
    		//需要进行用户的注册,注册之前,先调用检查用户名是否存在的方法
    		String username = "bill";
    		try {
    			checkUsername(username);
    			System.out.println("注册成功!");
    		} catch (RegisterException e) {
    			//具体的错误信息!
    			e.printStackTrace();
    		}
    		System.out.println("程序继续往后面执行!");
    	}
    	private static boolean checkUsername(String username) throws RegisterException {
    		for(String name:names) {
    			if(username.equals(name)) {
    				throw new RegisterException("该用户名已经存在!");
    			}
    		}
    		return true;
    	}
    }
    class RegisterException extends Exception{
    	public RegisterException() {
    		
    	}
    	public RegisterException(String message) {
    		super(message);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    三、运行时异常 demo

    自定义异常的使用,此处模拟的是出现一个RuntimeException的自定义异常

    public class UserRuntimeExceptionDemo {
    	public static void main(String[] args) {
    		operation("核心处理器");
    		System.out.println("继续下一步的操作!");//这一步不会执行
    	}
    
    	private static void operation(String operationPlace) {
    		if("核心处理器".equals(operationPlace)) {
    			throw new IllegalOperationException("触碰到了安全机制,系统马上自动关闭!");
    		}
    		System.out.println("操作成功!");
    	}
    }
    //定义一个非法操作异常,假设用户一旦触发了某个非常关键的操作的话,那么系统会自动关闭
    class IllegalOperationException extends RuntimeException{
    	public IllegalOperationException() {
    	
    	}
    
    	public IllegalOperationException(String message) {
    		super(message);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
  • 相关阅读:
    HTML+CSS+JS大作业:生态环境网站设计——环境保护主题
    武汉申报!2022年武汉经开区(汉南区) 技术合同登记奖励申报条件、材料申报流程
    六款Linux常用远程连接工具介绍,看看哪一款最适合你
    【力扣每日一题】2023.10.13 避免洪水泛滥
    红外成像人员检测数据集
    SQL注入漏洞:CMS布尔盲注python脚本编写
    如何实现斗轮机与就地程控站DCS系统间远距离无线通讯?
    Kubernetes:kube-scheduler 源码分析
    [Ubuntu]ssh: unrecognized service
    【QT进阶】Qt线程与并发之QtConcurrent的简单介绍
  • 原文地址:https://blog.csdn.net/weixin_39213232/article/details/132868379