zoukankan      html  css  js  c++  java
  • java 异常和异常处理

    异常:程序不正常的行为或者状态

      例如 数组越界、除0异常、访问某个不存在的文件

    异常处理的目的:

      程序返回到安全状态

      允许用户保存结果,并以适当方式关闭程序

      抓住异常,分析异常内容

    1.异常分类

      

      Throwable:所有错误的祖先

      Error:系统内部错误或者资源耗尽

      Exception:程序有关的异常,重点关注

        RuntimeException:程序运行时异常

        非RuntimeException: 外界相关的错误,典型的如IOException,访问的文件不存在的时候、连接不存在的数据库的时候会产生该异常

    2.异常处理

      try-catch-finally:一种保护代码正常运行的机制(至少要有try,catch和finally至少要有一个)

        try:里面写正常的业务逻辑代码

        catch:当try发生异常的时候,将执行catch中的代码,若无异常,则不执行。catch可以有多个,每个有不同的形参,当发生的异常类型和其中的某个相匹配的时候,将执行其中的代码,一个异常 只能进入一个catch块。如果没有匹配的,catch不会执行,直接finally 。

        catch的匹配是从上到小进行匹配的,一般将小的异常写在前面,大的写后面

        finally:一定会执行(哪怕catch中又发生了异常)

      catch-finally中都有可能再次发生异常,因此可以在这些模块里面嵌套try-catch-finally语句

    3.throws来声明异常

      方法可能存在异常语句,如果不处理,可以使用throws来声明这个方法

      调用带有throws Unchecked异常的方法,要么处理这些异常,要么再次向外throws,直到main函数为止

    4.重写中的异常

      一个方法如果被重写,重写它的方法必须抛出相同的异常,或者异常的子类(或者不抛)

      如果父类的方法抛出多个异常,那么重写的子类方法必须抛出那些异常的子类,也就是不能抛出新的异常

    5.自定义异常类

      自定义异常需要继承Exception类或其子类

        继承自Exception类,就变成了Checked Exception

        继承自RuntimeException,就变成了Unchecked Exception(除了RuntimeException类及其子类外,其他都是Checked Exception)

      自定义异常的重点在于构造函数 

        可以调用父类Exception的message构造函数

        可以自定义自己的成员变量

      在程序中采用throw(注意不是throws)来主动抛出异常,相当于调用异常类的构造器

        例如throw new MyException(参数列表)

  • 相关阅读:
    OpenGL相关文章
    gluOrtho2D与glViewport
    QOpenGLWidget
    openGL中的gl,glu,glut
    QT对话框
    QT布局
    QT容器类
    [POJ1014]Dividing(二进制优化多重背包)
    [Codefroces401D]Roman and Numbers(状压+数位DP)
    [HDU6326]Monster Hunter(贪心)
  • 原文地址:https://www.cnblogs.com/foodie-nils/p/13521039.html
Copyright © 2011-2022 走看看