A:异常注意事项
* a:子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。(父亲坏了,儿子不能比父亲更坏)
* b:如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常
* c:如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws
* B:如何使用异常处理
* 原则:如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,这是用throws
* 区别:
* 后续程序需要继续运行就try
* 后续程序不需要继续运行就throws
* 如果JDK没有提供对应的异常,需要自定义异常。
- package com.heima.test;
-
- import java.util.Comparator;
- import java.util.Scanner;
- import java.util.TreeSet;
-
- public class Test6 {
-
- /**
- * 程序启动后, 可以从键盘输入接收多个整数, 直到输入quit时结束输入. 把所有输入的整数倒序排列打印.
- *
- * 1,创建Scanner对象,键盘录入
- * 2,创建TreeSet集合对象,TreeSet集合中传入比较器
- * 3,无限循环不断接收整数,遇到quit退出,因为退出是quit,所以键盘录入的时候应该都以字符串的形式录入
- * 4,判断是quit就退出,不是将其转换为Integer,并添加到集合中
- * 5,遍历TreeSet集合并打印每一个元素
- */
- public static void main(String[] args) {
- //1,创建Scanner对象,键盘录入
- Scanner sc = new Scanner(System.in);
- //2,创建TreeSet集合对象,TreeSet集合中传入比较器
- TreeSet<Integer> ts = new TreeSet<>(new Comparator<Integer>() {
-
- @Override
- public int compare(Integer i1, Integer i2) {
- //int num = i2 - i1; //自动拆箱
- int num = i2.compareTo(i1);
- return num == 0 ? 1 : num;
- }
- });
- //3,无限循环不断接收整数,遇到quit退出,因为退出是quit,所以键盘录入的时候应该都以字符串的形式录入
- while(true) {
- String line = sc.nextLine(); //将键盘录入的字符串存储在line中
- if("quit".equals(line)) {
- break;
- }
- //4,判断是quit就退出,不是将其转换为Integer,并添加到集合中
- try {
- Integer i = Integer.parseInt(line);
- ts.add(i);
- } catch (Exception e) {
- System.out.println("输入错误,请输入一个整数:");
- }
- }
-
- // 5,遍历TreeSet集合并打印每一个元素
- for (Integer integer : ts) {
- System.out.println(integer);
- }
- }
-
- }
复制代码 |
|