异常

  • 异常分为系统定义异常和用户自定义异常

1.异常和常见异常类;

  • Java中所有的异常类都是java.lang.Throwable的子类
    • notion image
  • Error类
    • 内部系统错误,Java程序不做处理。这类异常主要是和硬件有关系,而不是由程序本身抛出。通常不由Java程序处理,用户也无法捕获。
  • Exception类
    • 描述的是程序和外部环境引起的错误,这些错误能通过程序捕获和处理。
      1. 运行时异常(RuntimeException)
        1. 可自动由JVM引发并处理,不需捕获或声明
        2. 被0除,数组下标越界等
            • 零除异常
              • 例子
          notion image
      1. 非运行时异常
        1. 通常由环境因素引起的,与程序员无关
        2. 输入、输出异常IOException,文件不存在、无效的URL等等
        3. Java编译器要求Java程序必须捕获或声明所有的非运行时异常。
        4. notion image

java的异常处理机制

  1. 异常的抛出。(throw)
  1. 异常的捕获。(try、catch、finally)
  1. 没有捕获异常的代码,程序将终止运行。

2.try、catch、finally的用法;

  • 格式
  • try{ //可能产生异常的代码放在此处 } catch (异常类名1 异常对象名){ //在此处理异常类型1对应的异常 } catch (异常类名2 异常对象名){ //在此处理异常类型2对应的异常 } finally{ //最终的程序出口,往往会写一些清理资源的语句 }

获取异常的有关信息

  • getMessage()函数
    • System.out.println(异常对象名.getMessage());
    • 得到有关异常事件的信息,如比如异常的名称、发生的原因、出现的位置等
  • printStackTrace()函数
    • 指出异常的类型、栈层次及出现在程序中的位置
getMessage方法和printStackTrace方法的区别是:

3.throws和throw

  • 抛出异常
    • 方法可能有异常可以抛出给调用该方法的程序
    • 此时需要在方法首部声明该异常
    • 方法调用者不处理这些异常,可以继续抛出,直到由main方法来处理
    • 如果main也没有编写try-catch-finally语句处理,则由JVM抛出并停止运行。
  • 通过throws语句和throw语句抛出异常
    • throw关键字抛出异常对象
    • throws关键字声明该方法可能会抛出的异常类型。
  • throws
    • [访问修饰符] 返回值类型 方法名([形参列表]) throws 异常类列表 { …… }
    • 来源
      • 方法中调用了可能抛出的异常的方法而产生的异常
      • 方法体中生成并使用throw手动抛出的异常
  • throw
    • throw new 异常类名();或 异常类名 对象名 =new 异常类名(); throw对象名;
    • 根据实际情况在程序中抛出一个异常。
例子
  • 注意
    • 想覆盖一个方法,抛出的异常必须是被覆盖的异常的子集

4.自定义异常;

  • 声明一个新的异常类必须从Java已定义异常类继承,如Exception、IOException等
  • 为新的异常类定义属性和方法,或重载父类的属性和方法,使这些属性和方法能够体现该类所对应的错误的信息

Throwable的几个常用方法:

  • String getMessage( ):返回一个异常的描述。
  • void printStackTrace( ):把堆栈轨迹输出到指定的输出流。
  • String getLocalizedMessage( ):返回一个异常的局部描述。
例子

5.断言

  • 是一种调试方法
  • 断言用于不捕获的错误,要求程序停止。Java默认禁用断言,可在调试时打开,在发布时关闭,或重新启用。
    • 格式
      • assert bolleanExpression;
        • true时,程序继续执行;为false时,停止执行
      • assert bolleanExpression :message;
        • true时,程序继续执行;当false时,停止执行,并输出message的值。
  • 断言默认是不启用的
    • 启用断言
      • cmd:在命令行下启用断言运行需要用以下语句: java -ea AssertDemo
      • Eclipse:进入菜单Run—>Run Configurations窗口中,在VM arguments框中输入“-ea”
notion image
Prev
抽象类和接口
Next
常用类库
Loading...
Article List
一个NotionNext搭建的博客
数据库系统概论
大数据原理与应用
javaWeb应用开发基础教程
python
毕业设计
大数据技术综合应用
实训-航空数据系统
java面向对象程序设计
数据结构
算法分析与设计
SPARK
Python爬虫大数据采集与挖掘
云计算
概率论与数理统计
数字逻辑
计算机网络
计算机组成原理
linux
操作系统
人工智能导论
数据仓库与数据挖掘
数据可视化
大数据安全与隐私保护
c语言
C++