2020.12.08,异常

异常概念
java编程中,异常本身就是一个类,产生异常是创建异常对象,并抛出异常,Java中JVM处理异常就是直接中断程序。
如果语法错误,那么编译都不会通过,吗没有产生.class文件,所以会在JVM中运行。所以不会出现异常
|
异常体系
异常其实就是帮助我们找到程序出现的问题。
异常的根类:java.long.Throwable
异常的子类:java.long.Error和java.long.Exception,平常说的是Exception(异常父类)
|
Exception:异常,能通过代码来改变
1.RuntiomException:运行异常

  • 空指针异常:NullPointException
  • 类型转换异常:ClassCasException
  • 下标越界异常:IndexOutBoundsException
  • 元素找不到异常:NoSuchElementFreeption
  • 类型转换异常:IllegeArgunFrecepyion
    2.IOException
  • 文件找不到一场:FileNotFoundException
    |||||||||||||||||||||||||
    |||||||||||||||||||||||||
    |||||||||||||||||||||||||
    Error异常:严重错误了奥,无法通过修改代码来改变
    1.虚拟机异常:VirtualWachiaeError
  • 内存溢出:outofMenmooryError
  • 栈溢出:stackOverFlorError
    |||||||||||||||||||||||
    |||||||||||||||||||||||
    |||||||||||||||||||||||
    异常处理:throw
    java处理五个关键字:try-----catch----finally----throw----throws
    |
    抛出异常:一般是用来检验传入的参数是否正确
    当我们在编写程序的时候,必须考虑是否会出现异常,如果传入的参数不符合要求就抛出异常
    异常抛出步骤
    1.创建异常,封装一些提示信息(信息自己编写)
    2.需要将异常对象告诉调用者,通过关键字【throw】抛出一个异常对象,throw一般用在方法内部,用于抛出异常并结束当前方法,整个程序来说不会停止。
    格式:throw new 异常类型(自己写的异常信息)
    |
    查看对象是不是null方法
    public static T requireNonNull(T obj,"如果对象为null,异常就会输出后面的那一句话"),查看指定对象是不是null
    ||||||||||||||||||||
    ||||||||||||||||||||
    ||||||||||||||||||||
    声明异常处理方式:throws
    声明异常:把问题表示出来,报告给调用者,显示告诉你(变异期间出现),如果方法内部有异常通过throw跑出一个编译器异常,有没有通过捕获处理(try....catch),必须就通过throws进行声明,让调用者处理。
    关键字:【throws】,运用方法声明,用于表示不处理异常,放到方法上,谁调用这个方法谁就必须处理这个方法
    格式:修饰符 返回值类型 方法名(参数列表) throws 异常类型1,异常类型2,.....{}
    |||||||||||||||||||||
    |||||||||||||||||||||
    |||||||||||||||||||||
    捕获异常(try---catch)
    如果出现异常就会立刻终止程序
    1.如果使用throws关键字这种声明的处理,会很危险,出现异常不会处理异常直接终止
    2.在方法中使用try---catch,语句来处理异常,发现异常之后就会处理掉异常,程序还是会接着走,Java中他对异常进行捕获,捕获之后对异常进行处理
    格式:一般来说try和catch连用的
    try{
    //内部包含可能出现异常的错误
    }catch(异常类型 e){
    //处理异常代码
    }
    ||||||||||||||||||||||
    ||||||||||||||||||||||
    ||||||||||||||||||||||
    获取异常的信息:包含了异常类型,位置,信息
    e.getMessage();给用户提示错误原因
    e.toString;获取异常类型,描述异常信息
    e.printStackTrace();获取异常类型,信息,位置
    |||||||||||||||||||||
    |||||||||||||||||||||
    |||||||||||||||||||||
    finally语句块,最后的
    有一些特定的代码不管异常是否会发生他都会执行mfinally存放代码一般来说一定会被指定行到
    格式:
    try{
    //可能有异常的代码
    }catch(异常类型 e){
    //处理异常
    }finally{
    //一点会执行的代码
    }
    //中间的catch语句可以省略,finally不能单独使用,建议三者连用
    |
    注意
    1.finally不能单独使用必须和try连用
    2.finally一般用于自愿的释放和回收,无论程序是否出现异常都会执行finally
    |
    备注
    如果finally语句块中有return语句,那么永远返回的是finally语句块的结果
    就除了Systm.exit()方法管什么东西都不能阻止fianlly的执行
    ||||||||||||||||||||||||
    ||||||||||||||||||||||||
    ||||||||||||||||||||||||
    异常注意事项:
    程序中我们一般使用的是一次捕获多次处理的方法,就是一个try多个catch,不同的catch的异常类型不同
    上面的异常只能是下面的异常的同一等级的,或者下面异常的子类
    注意事项:
    如果是运行时异常,可以不处理也不跑出,但是运行就会异常
    如果父类抛出多个异常,那么子类只能跑出相同的异常,或者异常子类,或者不抛出
    如果父类没有抛出异常,那么子类也不能抛出异常,只能捕获异常
    ||||||||||||||||||||||
    ||||||||||||||||||||||
    ||||||||||||||||||||||
    自定义异常
    什么事自定义异常类:在开发中根据自己的业务的情况来定义异常类
    如何自定义异常类
    1.自定义编译期异常:自定义类继承java.lang.Exception
    2.自定义运行期异常:自定义类继承java.long.RuntimeException
原文地址:https://www.cnblogs.com/tushao/p/14108856.html