zoukankan      html  css  js  c++  java
  • java学习--基础知识进阶第八天--笔记

    今日内容
    异常
    递归

    异常
    什么是异常?
    不正常,Java程序在编译或运行时出现的错误

    异常的体系
    Throwable
      |-Error:严重的错误,一般程序不能处理的问题,比如:服务器宕机、数据库崩溃、内存溢出
      |-Exception:非严重的错误
        |-编译时异常:在Exception类下除了RuntimeException类及其子类之外,在编译时期就出现的异常,在编译时期必须处理,否则编译出错
        |-运行时异常:包括RuntimeException类及其子类,在运行时期才会出现的异常,在编译时期不会出现,在编译时期可以处理也可以不处理,
            编译时期不处理不会报错

    运行时异常:
      NullPointerException、ArrrayIndexOutOfBoundsException
      ArithmeticException、ConCurrentModificationException


    JVM的异常处理方式
    (1)将异常信息打印在控制台
    (2)终止程序的运行

    异常处理方式
    方式一:捕获处理 try...catch...
    try{

    }catch(异常类型 变量名){

    }catch(异常类型 变量名){

    }
    ...


    try{

    } catch(异常类型 变量名){

    } finally {

    }

    try{

    } finally{

    }


    try: 用于存放有可能出现异常的代码
    catch: 用于捕获和处理
    finally: 最终的意思,用于释放资源,一定会执行的代码

    方式二:抛出 throws
    使用在方法声明上,可以抛出异常类名,而且可以抛出多个,多个之间用逗号隔开
    throws抛出之后,异常交给调用者来处理

    throw和throws的区别?
    (1)使用的位置不同
    throw使用在方法中
    throws使用在方法的声明上
    (2)抛出的内容不一样
    throw抛出的是异常对象或者异常对象名,只能抛出一个
    throws抛出的是异常类名,可以抛出多个
    (3)作用不一样
    throw用于制造一个异常,它不是异常处理的方式
    throws用于处理异常,是异常处理的方式之一

    处理多个异常
    (1)使用多个try...catch...,一个处理一个异常
    (2)使用一个try多个catch
    try{

    }catch(异常类型 变量名){

    }catch(异常类型 变量名){

    }
    ...

    (3)JDK1.7的新特性 使用|
    try {
    // String s = null;
    // System.out.println(s.length());

    // int[] arr = new int[5];
    // System.out.println(arr[8]);

    System.out.println(2 / 0);
    }
    catch(ArrayIndexOutOfBoundsException | NullPointerException e) {
    System.out.println("出错了");
    }

    注意:小括号写多个异常用|隔开,这多个异常直接只能是平级的异常,不能有子父类关系

    Throwable类
    常用方法
    String getMessage():获取异常出现的原因
    String toString():异常的类名和出现的原因
    printStackTrace():异常的类名、出现的原因及其位置

    自定义异常
    为什么要自定义异常?
    为了做到见名知义

    如何自定义异常
    自定义一个类继承RuntimeException或者Exception
    自定义运行时异常,继承RuntimeException
    自定义编译时异常,继承Exception

    继承完之后,只要根据父类的构造方法生成几个自定义异常类的构造即可

    自定义异常的使用
    使用上和Java给我们提供的异常没有什么区别
    如果使用自定义编译时异常,必须在编译时期进行处理(throws或者try...catch)
    如果使用自定义运行时异常,在编译时期可以不处理,不处理不会编译报错

    递归
    什么是递归
    方法自身调用自身

    递归的注意事项
    (1)递归要有出口
    (2)方法调用不能过多

  • 相关阅读:
    【递归】斐波那契数列第n个数
    二分查找【循环和递归】
    递归:正序、逆序输出一个正整数的各位数字
    Ubuntu x86-64汇编(5) 控制指令
    Ubuntu x86-64汇编(4) 数值操作指令
    Ubuntu x86-64汇编(3) 数值操作指令
    给X240换上了三键触摸板
    Ubuntu x86-64汇编(2)
    Ubuntu x86-64汇编(1)
    X240 Ubuntu18.04安装流水帐
  • 原文地址:https://www.cnblogs.com/bigorangehasc/p/8639498.html
Copyright © 2011-2022 走看看