面向对象的异常处理机制
来源:互联网 发布:网店美工下载 编辑:程序博客网 时间:2024/06/05 02:42
1,从安全的角度来讲,面向过程的异常处理是更为安全的,因为面向过程是事前处理,而面向对象是事后处理。
从编程和理解的角度来讲,面向对象的处理方式更为方便易懂,因为他是正常代码和处理异常分开的,从而使程序具有处理错误的能力。
2,另一方面
面向过程语言错误处理方式是有缺陷的:
1)不进行范围检查(数据范围错误,如数组下标越界)
2)采用if语句进行事先判断以防止出现错误。
3,虽说java也是有他的缺陷但是java还是一门安全的语言:
1)Java语言提供严密的语法规则。
2)Java在编译和运行时严格检查错误。
3)Java提供异常处理机制。
4)Java提供内存自动管理方式。
4,java中的异常和错误
1)错误(error)指程序运行时遇到的硬件或操作系统的错误。 Error错误类
2)异常(exception)指在硬件和操作系统正常时,程序遇到的运行错。 Exception异常类
5,异常和错误的全部分类,继承。
6,几个值得关注的RuntimeException运行异常类:
1)算术异常ArithmeticException:除数为0
2)空对象异常NullPointerException
int a[] = null;
a[0] = 1; //对空数组中的元素进行操作
String str = null;
str.length() //调用空对象的方法
3)类型强制转换异常ClassCastException
Object obj = new Object();
String str = (String) obj;
4)负数组长度异常NegativeArraySizeException
int a[] = new int [-1];
5)数组下标越界异常ArrayIndexOutOfBoundsException
int a[] = new int[1];
a[1] = 1;
6)字符串序号越界异常StringIndexOutOfBoundsException
"abc".charAt(-1)
7)数值格式异常NumberFormatException
int j = Integer.parseInt("abc");
7,程序对错误与异常的三种处理方式
1)程序不能处理错误
2)程序应避免而不捕获的异常,如除数为0、数组下标越界等。
3)必须捕获的异常
8,下面使用一个计算数组平均值的例子解读异常的使用:
public class ArrayAverage { //需求:求一个整数数组的平均值public static double average(int table[]){//方便if判断的要用if处理,如空指针异常、数组长度为0if(table!=null && table.length!=0){//注意,两个布尔表达式顺序不能颠倒double sum=0;for(int i=0;i<table.length;i++){sum = sum + table[i];}return sum/table.length;}return 0;}//需求: 求两个整数数组的平均值public static double average(int table1[], int table2[]){if(table1==null || table1.length==0){return average(table2);}//程序能够运行到这里,说明table1非空,且元素个数大于0if(table2==null || table2.length==0){return average(table1);}//程序能够运行到这里,说明table1和table2都为非空,且元素个数大于0int count=table1.length+table2.length;double sum=0;for(int x:table1){sum +=x;}for(int x:table2){sum +=x;}return sum/count;}//需求: 把一个字符串数组中的整数提取出来,生成一个整数数组返回public static int[] tointArray(String str[]){if(str!=null && str.length!=0){int a[] = new int[str.length];int i=0,n=0;while(i<str.length){try {a[n]= Integer.parseInt(str[i]);//"12", "abc12"n++;}catch (NumberFormatException e) {System.out.println(str[i]+"不能转换成整数");}catch (Exception e) {System.out.println("出现没想到的异常");}finally{i++;}}//经过上面的循环,a[]中的前n个数据是有效的,后面的是无效的。//把有效元素提取成新的数组int b[] = new int[n];System.arraycopy(a, 0, b, 0, n);return b;}return null;}}
- 面向对象的异常处理机制
- 黑马程序员-面向对象-异常处理机制
- 面向对象-异常机制
- 黑马程序员_面向对象(3) 异常处理机制
- Java面向对象--内存分析,异常处理机制
- 面向对象之异常处理
- 面向对象之异常处理
- 面向对象处理机制VS面向结构处理机制
- 面向过程处理机制VS面向对象处理机制
- 面向过程处理机制VS面向对象处理机制
- 面向对象的程序设计学习笔记-27-异常处理
- java面向对象-异常处理的一个例子
- 黑马程序员—Java面向对象(异常处理机制、package包、import导入包、jar包)
- 面向对象7_【异常】【异常的处理】【异常的应用】
- 异常的处理机制
- java面向对象程序设计(五)-----异常处理
- java面向对象下:异常处理
- JAVA-面向对象之异常处理
- 推荐系统学习笔记之三 LFM (Latent Factor Model) 隐因子模型 + SVD (singular value decomposition) 奇异值分解
- 结构体(1)
- 表格打印-字符串列表的列表
- 图解图的存储结构
- BZOJ 1856 [Scoi2010]字符串
- 面向对象的异常处理机制
- 一张图看懂docker命令
- Codeforces 373D Counting Rectangles is Fun【Dp】
- JavaScript之WebSocket 技术
- mycat1.6.5分片(按照天分片)
- Java 基础集合转换(数组、List、Set、Map相互转换)
- nginx日志格式
- 文本处理相关资料整理
- 从生活看AOP