一个NotionNext搭建的博客
数据库系统概论
大数据原理与应用
javaWeb应用开发基础教程
python
毕业设计
大数据技术综合应用
实训-航空数据系统
java面向对象程序设计
数据结构
算法分析与设计
SPARK
Python爬虫大数据采集与挖掘
云计算
概率论与数理统计
数字逻辑
计算机网络
计算机组成原理
linux
操作系统
人工智能导论
数据仓库与数据挖掘
数据可视化
大数据安全与隐私保护
c语言
C++
异常
- 异常分为系统定义异常和用户自定义异常
1.异常和常见异常类;
- Java中所有的异常类都是java.lang.Throwable的子类

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


java的异常处理机制
- 异常的抛出。(throw)
- 异常的捕获。(try、catch、finally)
- 没有捕获异常的代码,程序将终止运行。
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”

Prev
抽象类和接口
Next
常用类库
Loading...