zoukankan      html  css  js  c++  java
  • 关于异常

    之前常常看到各种异常,例如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

  • 相关阅读:
    #Leetcode# 90. Subsets II
    Linux——网段的划分,子网掩码,ABC类地址的表示法
    Linux——文件目录管理(结构)
    Caffe入门与应用 by GX
    1、概述
    6、多态性-4、抽象类
    6、多态性-3、虚函数
    第二课2、ROS
    第一课1、ROS
    6、多态性-2、运算符重载
  • 原文地址:https://www.cnblogs.com/take-it-easy/p/13690102.html
Copyright © 2011-2022 走看看