Java异常处理-6-异常注意事项和练习题

      我们知道,异常可以使用try catch 和throw抛出,什么情况下使用捕获或者抛出呢?如果在继承中,子类如何处理异常?这两个问题,我们这篇来总结下,然后来几个异常的练习题。

1.异常注意事项

- 子类重写父类方法时,子类的方法必须抛出相同的异常或者父类异常的子类。(父亲坏了,儿子不能更坏)

- 如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者他的子集。(子类不能抛出父类没有的异常)

- 如果被重写的方法没有异常抛出,那么子类的方法绝对不而已抛出异常。如果子类方法内有异常发现,只能使用try 不能使用thow。


2.如果使用异常处理

      原则上,如果该功能内部可以把问题处理,使用try catch;如果处理不了,交给调用者处理,这个时候使用throw。

      或者这么去理解:如果后续程序需要继续运行,就使用try, 如果后续程序不需要继续运行,就使用throw。


3.异常的练习题

上面是总结的一些经验,下面来一个异常的练习题。

题目:

       键盘输入一个int类型的整数,对其求二进制表现形式。如果录入整数过大,给以提示“录入整数过大,请重新输入一个整数”;如果录入的是小数,给提示“录入的是小数,请重新输入一个整数”;如果录入的其他字符,请提示“录入的是非法字符,请输入一个整数”。

分析过程:
1)创建键盘录入对象
2)将键盘录入结果存储在String类型字符串(关键)
3)键盘录入的结果转成int类型数据,是正确还是错误
4)是正确的直接转换,错误的要进行对应判断

代码:

package exception;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;

public class Demo1_Finally {
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个整数!");
		
		while (true) {
			String line = sc.nextLine();
			try {
				int num = Integer.parseInt(line);
				System.out.println(Integer.toBinaryString(num));
				break;
			} catch(Exception e) {
				
				try {
					new BigInteger(line);
					System.out.println("输入整数过大,请重新输入一个整数!");
				} catch (Exception e2) {
					try {
						new BigDecimal(line);
						System.out.println("输入的是一个小数,请重新输入一个整数!");
					} catch (Exception e1) {
						
					    System.out.println("输入的是非法字符,请重新输入一个整数。");
					}
				}
			}
		}
		
	}

}
通过try catch的嵌套,把这个异常的练习给解决了。



猜你喜欢

转载自blog.csdn.net/u011541946/article/details/80862624