容错性

简介:

程序的容错性很重要.

容错性越好,兼容性就越好.比如浏览器解析css时就有很灵活的容错性.当遇到错误的css样式时就直接忽略,而不会报错.忽略错误的样式,就是容错.有什么好处呢?体现在浏览器的兼容性上.比如border-radius是HTML5的属性,IE9支持,但是IE8支持.可是我们再IE8中运行时依然正常,而不会因为报错导致不解析网页样式.

 

Java中也有容错性.比如我之前写了一个方法

Java代码   收藏代码
  1. @Deprecated  
  2.     public static String getFullContent(File file) {  
  3.         BufferedReader reader = null;  
  4.         if (!file.exists()) {  
  5.             System.out.println("getFullContent: file(" + file.getAbsolutePath()  
  6.                     + ") does not exist.");  
  7.             return null;  
  8.         }  
  9.           
  10.         try {  
  11.             reader = getBufferReaderFromFile(file);  
  12.             return getFullContent(reader);  
  13.         } catch (FileNotFoundException e1) {  
  14.             e1.printStackTrace();  
  15.         } finally {  
  16.             if (null != reader) {  
  17.                 try {  
  18.                     reader.close();  
  19.                 } catch (IOException e) {  
  20.                     e.printStackTrace();  
  21.                 }  
  22.             }  
  23.         }  
  24.         return null;  
  25.     }  

 该方法只有一个参数,但是后来我发现应该增加一个参数编码,于是修改上述方法为:

Java代码   收藏代码
  1. public static String getFullContent(File file, String charset) {  
  2.         BufferedReader reader = null;  
  3.         if (!file.exists()) {  
  4.             System.out.println("getFullContent: file(" + file.getAbsolutePath()  
  5.                     + ") does not exist.");  
  6.             return null;  
  7.         }  
  8.         if (charset == null) {  
  9.             charset = SystemHWUtil.CHARSET_ISO88591;  
  10.         }  
  11.         try {  
  12.             reader = getBufferReaderFromFile(file, charset);  
  13.             return getFullContent(reader);  
  14.         } catch (FileNotFoundException e1) {  
  15.             e1.printStackTrace();  
  16.         } finally {  
  17.             if (null != reader) {  
  18.                 try {  
  19.                     reader.close();  
  20.                 } catch (IOException e) {  
  21.                     e.printStackTrace();  
  22.                 }  
  23.             }  
  24.         }  
  25.         return null;  
  26.     }  

 修改完了就OK 了吗?

 

因为这是一个通用的工具类,所以只要用到这个方法的地方都报错了.为什么?因为方法签名改变了!!!

虽然我方法的功能增强了,可是我破坏了兼容性.

后来我增加一个方法:

Java代码   收藏代码
  1. public static String getFullContent(File file) {  
  2.         return getFullContent(file, null);  
  3.     }  

 就好了.

 

所以我就给自己定了一个规矩:以后增加一个方法的参数时,一定要保留原来的签名.

比如之前写了方法A(x,y)

后来扩充了功能,变为:A(x,y,z),那么我同时肯定会增加一个方法

A(x,y)

{

   A(x,y,null)

}

 

 

相关文章
|
3月前
|
存储 缓存 Oracle
Oracle数据库高可用性和容错性
【7月更文挑战第6天】
77 1
|
3月前
|
消息中间件 存储 负载均衡
Kafka高可用性指南:提高数据一致性和集群容错能力!
**Kafka高可用性概览** - 创建Topic时设置`--replication-factor 3`确保数据冗余和高可用。 - 分配角色:Leader处理读写,Follower同步数据,简化管理和客户端逻辑。 - ISR(In-Sync Replicas)保持与Leader同步的副本列表,确保数据一致性和可靠性。 - 设置`acks=all`保证消息被所有副本确认,防止数据丢失,增强一致性。 - 通过这些机制,Kafka实现了分布式环境中的数据可靠性、一致性及服务的高可用性。
393 0
|
5月前
|
存储 算法
服务中一个简单的分布式系统
【5月更文挑战第21天】本文介绍一个分布式算法,旨在解决高速和低速网络环境下进程间保持相同通信频率的问题。算法通过frequencyEpoch防止过时信息导致无效切换,确保只有在多数节点检测到当前频率嘈杂时才会切换。
41 0
服务中一个简单的分布式系统
|
5月前
|
负载均衡
分布式系统
分布式系统
34 3
|
5月前
|
负载均衡
网络分区容错性
网络分区容错性
112 2
|
存储 缓存 文件存储
如何保证分布式文件系统的数据一致性
分布式文件系统需要向上层应用提供透明的客户端缓存,从而缓解网络延时现象,更好地支持客户端性能水平扩展,同时也降低对文件服务器的访问压力。当考虑客户端缓存的时候,由于在客户端上引入了多个本地数据副本(Replica),就相应地需要提供客户端对数据访问的全局数据一致性。
31427 70
如何保证分布式文件系统的数据一致性
|
算法 NoSQL 分布式数据库
如何在分布式系统中实现一致性?
如何在分布式系统中实现一致性?
311 0
|
存储 SQL Java
理解「分布式系统」曾经发生的事情
理解「分布式系统」曾经发生的事情
理解「分布式系统」曾经发生的事情
|
存储 分布式计算 负载均衡
分布式系统是什么
分布式系统是什么
245 0
|
消息中间件 运维 负载均衡
到底什么是分布式系统?
分布式系统背景 说分布式系统必须要说集中式系统,集中式系统中整个项目就是一个独立的应用,整个应用也就是整个项目,所有的东西都在一个应用里面。