概述

异常是一些用来封装错误信息的对象
它由异常的类型、提示信息、报错的行号提示三部分组成

异常继承结构

  1. Throwable:顶级父类

    1. Error:系统错误,无法修复
    2. Exception:可以修复的错误
      1. RunTimeException:编译错误
        1. IndexOutOfBoundsException—数组下标越界
        2. InputMismatchException—输入不匹配
        3. ArithmeticException—算数异常
      2. ClassCastException
      3. ClassNotFoundException

    image.png

    异常处理方式

    当程序中遇到了异常,通常有两种处理方式:捕获或者向上抛出
    当一个方法抛出异常,调用位置可以不做处理继续向上抛出,也可以捕获处理异常

    捕获方式

    1. 捕获异常的方式
    2. try{
    3. 可能会出现异常的代码
    4. }catch(异常类型 类型名){
    5. 捕获到异常进行处理解决的方法
    6. }

    抛出方式

    1. 修饰符 返回值类型 方法名(参数列表) throws 异常类型 {方法体;}

    示例

    ```java package cn.tedu.Exception;

import java.util.InputMismatchException; import java.util.Scanner;

/**

  • 异常入门案例 */

public class TestException { public static void main(String[] args) { //f1(); //f2(); //f3(); method(); }

  1. private static void method() {
  2. try {
  3. f3();
  4. } catch (Exception e) {
  5. System.out.println("输入数据有误");
  6. }
  7. }
  8. /*
  9. 异常抛出格式:在小括号和大括号之间写:throws 异常类型
  10. 如果一个方法抛出了异常,谁调用这个方法,谁就需要处理这个异常
  11. 处理有两种方案:捕获解决和继续向上抛出
  12. 注意:一般需要在main()方法调用之前解决异常,而不是把问题交给main方法,这样将会导致无人解决异常
  13. */
  14. private static void f3() throws ArithmeticException,InputMismatchException,Exception{
  15. System.out.print("请输入被除数:");
  16. int a = new Scanner(System.in).nextInt();
  17. System.out.print("请输入除数:");
  18. int b = new Scanner(System.in).nextInt();
  19. System.out.println("计算结果为:" + a/b);
  20. }
  21. /*
  22. 捕获异常的方式
  23. try{
  24. 可能会出现异常的代码
  25. }catch(异常类型 类型名){
  26. 捕获到异常进行处理解决的方法
  27. }
  28. try-catch可以嵌套的,如果有多种异常类型需要分别处理
  29. 如果不需要特殊处理,只需要处理,不需要嵌套
  30. 将所有异常的子类型同意看作父类的Exception来处理
  31. 提供一种通用的解决方法,这是多态最为经典的一种用法
  32. */
  33. private static void f2() {
  34. try {
  35. System.out.print("请输入被除数:");
  36. int a = new Scanner(System.in).nextInt();
  37. System.out.print("请输入除数:");
  38. int b = new Scanner(System.in).nextInt();
  39. System.out.println("计算结果为:" + a/b);
  40. }catch (ArithmeticException e){
  41. System.out.println("0不可做除数");
  42. }catch (InputMismatchException e){
  43. System.out.println("输入类型有误,请输入整数类型");
  44. }catch (Exception e){
  45. System.out.println("请输入正确的数据!");
  46. }
  47. }
  48. private static void f1() {
  49. System.out.print("请输入被除数:");
  50. int a = new Scanner(System.in).nextInt();
  51. System.out.print("请输入除数:");
  52. int b = new Scanner(System.in).nextInt();
  53. System.out.println("计算结果为:" + a/b);
  54. //输入6与0报错ArithmeticException,原因除数不能为0
  55. //输入3与4.4报错InputMismatchException,原因输入类型不是int类型
  56. }

} ```