JAVA中的异常——自定义异常

/*
 * 因为项目中会出现特有问题
 * 而这些问题并未被java所描述并封装对象
 * 所以对于这些特有的问题可以按照java的对问题封装的思想
 * 将特有的问题,进行自定义的异常封装
 * 
 * 自定义异常
 * 
 * 当函数内部出现了throw抛出异常对象,那么就必须给对应的处理动作
 * 要么在内部try  catch处理
 * 要么在函数上声明让调用者处理
 * 
 * 一般情况下,函数内部出现异常,函数上需声明
 * 
 * 发现打印的结果中只有异常名称,却没有异常的信息
 * 因为自定义的异常并未定义信息
 * 
 * 自定义信息
 * 以为父类中已经把异常信息的操作都完成了
 * 所以子类在构造时,将异常信息传递给父类通过super语句
 * 那么就可以直接通过getMessage获得异常信息了;
 * 
 * 自定义异常:
 * 必须是自定义类继承Exception
 * 
 * 继承Exception原因
 * 异常体系有一个特点:因为异常类和异常对象都被抛出
 * 他们都具备可抛性,这个可抛性是Throwable这个体系中独有的特点
 * 
 * 只有这个体系中的类和对象才可以被throws和throw操作
 * 
 * throws和throw的区别
 * throws使用在函数上
 * throw使用在函数内
 * 
 * throws后面跟的是异常类,可以跟多个,用逗号隔开
 * throw后面跟的是异常对象 
 * 
 * */

下面是个小例子

/*需求:在此特有项目中,除数为负数算异常*/

class FuShuException extends Exception {
	private int value;

	FuShuException(String msg, int value) {
		super(msg);
		this.value = value;
	}

	public int getValue() {
		return value;
	}
}

class Demo2 {
	int div(int a, int b) throws FuShuException {
		if (b < 0)
			throw new FuShuException("除数出现了负数", b); // 手动通过throw关键字抛出一个自定义异常对象
		return a / b;
	}
}

public class ExceptionDemo2 {
	public static void main(String args[]) {
		Demo2 d = new Demo2();
		try {
			int x = d.div(4, -1);
			System.out.println("x = " + x);
		} catch (FuShuException e) {
			System.out.println("错误的负数是:" + e.getValue());
			System.out.println(e.getMessage());
		}
		System.out.println("over");

	}
}

这个例子中catch的是自定义的异常,在使用异常的时候catch的异常要有针对性,这样我们才能对问题进行针对性解决。


                                                                                        -----------------------By   仔鸡

猜你喜欢

转载自blog.csdn.net/qq_37325788/article/details/80213450