二级java程序设计--异常与断言
来源:互联网 发布:js仿ios选择器 编辑:程序博客网 时间:2024/06/06 04:56
异常与断言
掌握分析与学习目的1.掌握java异常机制的处理方法
2.了解断言的作用
一.概述
1.java的异常机制:一旦出现异常,可以由运行的方法或由虚拟机生成一个异常对象,包含异常事件的类型以及发生异常时程序的状态等信息。
2.java的类库中提供一个Throwable类,所有的异常对象都必须是它的实例或它子类的实例。Throwable类中的方法对抛出异常进行描述。
3.Error类包括动态连接失败,硬件设备等不可查的严重错误这类异常都有java语言来抛出和捕获。
4.编程者需要抛出和捕获的都是Exception这类异常。
二.异常处理类型:捕获异常和声明抛出异常。
1.捕获异常:要求在程序的方法中预先声明,在调用方法时用try{}actch(){}[finally{}]程序块捕获并处理。
2.声明抛出异常用throws子句声明并用throw语句抛出异常到调用方法中。
3.自定义异常:要求所定义的异常类必须是Exception的子类。
public class ThrowableException{public static void main(String[] args){try{throw new Throwable("My Exception");}catch(Throwable e){System.out.println("e.getMessage:"+e.getMessage);System.out.println("e.printStackTrace():");e.printStackTrace();}}}三.异常处理编程的提醒
1.finally语句:捕获异常的统一出口
2.异常处理的原则
(1)在捕获或声明异常时,应注意选择适当的异常类,选择适当的地方处理,是在方法内处理还是用throws子句传递给调用栈的上层。
(2)把异常处理的代码与正常的代码分开。
(3)利用finally语句作为异常处理的统一接口。
(4)能用简单测试不要用异常控制,对异常不要过分细化,也不要压制。
四.断言:对布尔表达式进行检查,一个正确的程序必须保证这个布尔表达式的值为true。若该值为false,说明程序已经处于不正确的状态,系统将给出警告或退出。
一般来说,断言用于保证程序最基本,关键的正确性。断言检查通常在开发和测试时开启。
1.语法:两种语法格式:
assert <boolean_expression>;
assert <expression1>:<expression2>
第二种格式的expression2可以是任何对象或原始类型(包括null),若表达式为false,就引发AssertionError。不要捕获该错误,否则程序会异常停止。
2.使用:一般用于检查一些关键的值,并且这些值对程序或者局部功能有很大的影响。并且这种错误不容易恢复。
(1)内在不变式:在确信某种情况总存在时编码,就可用内在不变式断言来保证假设的正确性。如:
if(x>0){//do something}else{assert(x == 0);//do something 否则x为负}(2)控制流不变式
switch(x){case 1://...;break;case 2://...;break;case 3://...;break;default:assert false:"x value is invalid:"+x;break;}假设x值为0且不可能为负,x出现负值时程序肯定错误。若代码中用断言,保证x出现负值时就会报告。
(3)什么情况下不要使用断言
1 作为公共方法的参数检查,永远要求执行。若用断言,在关闭断言时无法执行。
2 不要使用断言语句去修改变变量和改变方法的返回值。
小结:断言不应该用于验证程序的正确与否,而是验证方法是否满足预期结果。
阅读全文
0 0
- 二级java程序设计--异常与断言
- 二级java程序设计--Applet程序设计
- 二级java程序设计--集合与泛型
- Java异常处理与断言
- 二级java程序设计--线程
- 二级java程序设计--文件
- Java异常、断言、日志与调试
- 二级java程序设计--图形用户界面(1)
- 二级java程序设计--图形用户界面(2)
- 异常与断言
- java 异常 断言
- 【Java基础】异常 断言
- Java:异常、断言
- java复习-异常+断言
- 两张图解读Java异常与断言
- 【转载】J2SE知识点归纳笔记(四)---Java异常与断言
- 【转载】两张图解读Java异常与断言
- The Java Programming Language4th读书笔记-第十二章 异常与断言
- servletCookieAndSession
- 伪静态规则
- JDBC连接工具类
- 顺序表的基本操作
- MYSQL其他常用函数
- 二级java程序设计--异常与断言
- socket网络编程基础示例
- Splunk的基本使用心得
- Java 概述
- 任务管理器已被系统管理员停用的解决方法
- 蚁群算法、遗传算法、模拟退火算法介绍
- 万物皆对象的JavaScrip
- mysql5.7.19 winx64解压缩版安装配置教程
- Python3[爬虫实战] scrapy爬取汽车之家全站链接存json文件