⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 throwandthrows.java

📁 Java_JDK_实例宝典书中的源码
💻 JAVA
字号:
package book.exception;
/**
 *  抛出异常和声明异常
 *	throws用在方法声明中,用于声明该方法可能会抛出的异常,允许throws多个异常。
 *  throw用在方法体内,当方法在执行时遇到异常情况,可以将异常情况封装为异常对象,然后throw,即抛出异常
 */
public class ThrowAndThrows {
	/**
	 * 计算一个数字的平方根
	 * @param nStr	以字符串的形式提供数字
	 * @return
	 * @throws Exception	当用户输入的字符串为空,
	 * 			或者字符串无法转换成数字,或者转换成的数字小于0,都会抛出异常
	 */
	public static double sqrt(String nStr) throws Exception{
		if (nStr == null){
			//用throw关键字抛出异常,当异常被抛出时,程序会跳出该方法
			throw new Exception("输入的字符串不能为空!");
		}
		double n = 0;
		try {
			n = Double.parseDouble(nStr);
		} catch (NumberFormatException e){
			//将parseDouble方法可能抛出的异常NumberFormatException捕获,
			//然后将捕获的异常重新封装并抛出
			throw new Exception("输入的字符串必须能够转化成数字!", e);
		}
		if (n < 0){
			throw new Exception("输入的字符串转化成的数字必须大于等于0!");
		}
		//计算平方根
		return Math.sqrt(n);
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		//由于sqrt方法的声明中有throws 关键字,所以,在调用该方法时,
		//必须对throws后面声明的异常进行处置,处置方式有两种: 
		//(1)本方法不理会该异常,在本方法的声明中同样声明throws,将异常向外抛出。跟本例中的main方法一样。
		//(2)本方法处理该异常。在调用sqrt方法时,使用try...catch语句,将可能会出现异常的代码块catch,然后进行处置。
		
		try{
			ThrowAndThrows.sqrt("-124.56");
		} catch (Exception e){
			//将sqrt方法声明的可能抛出的Exception异常捕获。
			//打印捕获的异常的堆栈信息,从堆栈信息中可以发现异常发生的位置和原因。
			System.out.println("Got a Exception: " + e.getMessage());
			e.printStackTrace();
			//不做进一步处理,将异常向外抛出。
			throw e;
		}
		
		//将sqrt声明了可能会抛出的异常向外抛,必须在方法声明中使用throws。
		ThrowAndThrows.sqrt("-124.56");
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -