• 关于异常


    之前常常看到各种异常,例如ArrayIndexOutOfBoundsException异常这种一般就是代码写的有问题,但之前碰到的关于日期转换的异常让我有些奇怪,明明我给的输入没错,但为什么还要try catch,今天仔细了解过后,有恍然大悟的感觉。

    首先,我们常看到的那些异常(ArrayIndexOutOfBoundsException,SQLException)都是类(本来java万物皆对象)。而且他们往上找父类,总能找到一个Throwable类。在程序触发这些异常时,会new一个对应类的对象,打印相关信息,如果没有捕获,则会停止运行。

    异常体系图如下:

     Error:严重的问题,不在程序处理范围之内,例如系统崩溃,StackOverflow等等

    Exception:异常类,程序可处理

    RuntimeException:运行时异常,编译时不会被检查出来,java不会强制要求你去捕获,按道理是你程序写的有问题,最好应该回来改代码,而非try catch。往上看,继承自RuntimeException类。

    CheckedException:检查型异常,编译时就会报错,java强制要求你捕获,原因时你无法控制用户的输入,所以要对用户的错误输入做提前准备。往上看的继承关系中为Exception类,无RuntimeException类。如io异常、sql异常。

    两种可能的处理方式:try-catch,或者throws

     try里面放方法体

    catch参数为异常类+形参,如果触发的异常符合这个异常类,才会进catch。e是对象,可以用e.getmessage,e.printStackTrace等打印信息。

    finally的用法

    throws是因为在这个地方无法处理,交给调用者处理。其实没有做任何事,还是需要调用者做try-catch

    可以自定义异常,例如定义一个异常类继承于Exception,代表登录时异常。在代码中,检查,如果分数大于100,throw(不是throws)该异常,触发该异常。

    常见的异常类,看这篇文章

    https://zhuanlan.zhihu.com/p/61092776

  • 相关阅读:
    Hbase安装与简单使用
    Integer Int
    Maven是什么
    对Servlet执行流程的初步认识
    android studio 开发环境的搭建
    centos下更换默认的python版本
    写出我心(七)
    写出我心(六)
    写出我心(五)
    写出我心(四)
  • 原文地址:https://www.cnblogs.com/take-it-easy/p/13690102.html
Copyright © 2020-2023  润新知