异常--自定义异常概述

一、自定义异常概述

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);
	}
}

三、运行时异常 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);
	}
}

你可能感兴趣的:(java)