程序的容错性很重要.
容错性越好,兼容性就越好.比如浏览器解析css时就有很灵活的容错性.当遇到错误的css样式时就直接忽略,而不会报错.忽略错误的样式,就是容错.有什么好处呢?体现在浏览器的兼容性上.比如border-radius是HTML5的属性,IE9支持,但是IE8支持.可是我们再IE8中运行时依然正常,而不会因为报错导致不解析网页样式.
Java中也有容错性.比如我之前写了一个方法
@Deprecated public static String getFullContent(File file) { BufferedReader reader = null; if (!file.exists()) { System.out.println("getFullContent: file(" + file.getAbsolutePath() + ") does not exist."); return null; } try { reader = getBufferReaderFromFile(file); return getFullContent(reader); } catch (FileNotFoundException e1) { e1.printStackTrace(); } finally { if (null != reader) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; }
该方法只有一个参数,但是后来我发现应该增加一个参数编码,于是修改上述方法为:
public static String getFullContent(File file, String charset) { BufferedReader reader = null; if (!file.exists()) { System.out.println("getFullContent: file(" + file.getAbsolutePath() + ") does not exist."); return null; } if (charset == null) { charset = SystemHWUtil.CHARSET_ISO88591; } try { reader = getBufferReaderFromFile(file, charset); return getFullContent(reader); } catch (FileNotFoundException e1) { e1.printStackTrace(); } finally { if (null != reader) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; }
修改完了就OK 了吗?
因为这是一个通用的工具类,所以只要用到这个方法的地方都报错了.为什么?因为方法签名改变了!!!
虽然我方法的功能增强了,可是我破坏了兼容性.
后来我增加一个方法:
public static String getFullContent(File file) { return getFullContent(file, null); }
就好了.
所以我就给自己定了一个规矩:以后增加一个方法的参数时,一定要保留原来的签名.
比如之前写了方法A(x,y)
后来扩充了功能,变为:A(x,y,z),那么我同时肯定会增加一个方法
A(x,y)
{
A(x,y,null)
}
相关推荐
【计算机数据库及系统容错性处理】 0 引言 计算机图形处理技术的广泛应用是科技进步的体现,数据可视化技术——利用计算机图形学和图像处理技术将数据转化为图像或图形,以便用户理解和交互,已经成为信息技术的...
在当前的IT行业中,分布式数据库的容错性是其可靠运行的重要保障。分布式数据库系统因其高可靠性、高扩展性和数据分布特性在互联网、大数据等领域得到了广泛的应用。然而,在分布式数据库系统运行过程中,硬件故障、...
四足机器人的容错性步态规划方法研究涉及了机器人学、运动学、机器学习等多个领域。容错性步态规划的核心目的是为了使机器人在发生某些故障,尤其是关节锁定故障时,仍然能够保持运动能力,保证机器人在复杂环境中...
### 软件工程与软件系统可容错性评估 #### 第一章:软件工程概述 **软件工程定义** 软件工程是一种系统化的方法,旨在通过规范化的流程来开发和维护软件产品,确保软件产品的高质量。这种方法强调了软件开发过程...
### ChatGPT模型的容错性与稳定性分析 #### 一、引言 近年来,随着人工智能技术的迅猛发展,自然语言处理(NLP)领域的研究取得了显著进展。由OpenAI研发的ChatGPT模型作为一项重要的技术创新,在对话生成任务中...
### 软件工程中的可靠性与容错性 #### 第1章 软件工程概述 **软件工程定义** 软件工程是一种系统化、规范化的方法,用于软件的开发、运行及维护过程中,旨在提高软件产品的质量和生产效率。它强调的是通过一系列...
本文探讨了基于Xilinx公司Virtex-II系列SRAM型FPGA的容错性设计方法。这种设计方法强调了动态刷新(Scrubbing)技术的应用,通过周期性地刷新FPGA内部配置数据,减少由高能粒子引起的单粒子翻转效应对系统的影响。...
开箱即用,简单粗暴Elasticsearch天然支持分布式和集群,开箱即用,零配置,零改动。自动分片一个index默认5个primaryshard,那么我们创建一个document,他给我们分配到哪个shard上了呢?搜索的时候又是怎么知道我们...
### 提高系统容错性的软件技术 #### 一、引言 随着计算机技术在现代军事装备中的广泛应用,其重要性日益凸显。计算机不仅在装备研发过程中占据着越来越大的比例,而且在装备的实际运行中扮演着核心角色。然而,...
然而,与任何先进系统一样,ChatGPT也面临着模型容错性的问题,即如何在面对错误或不完整的输入时,依然能够提供合理且准确的回答。本文将深入探讨ChatGPT模型的容错性挑战及其应对策略,尤其是纠错技术和上下文感知...
### 分布式云存储容错性评估与优化 #### 分布式云存储容错机制概览 **分布式文件系统(DFS)**: - **数据分散存储**:DFS将数据分割成多个块,这些块被存储在网络中的不同服务器上,以此方式实现数据冗余和提高...
在讨论构件的容错性时,重要的是能够有效地模拟故障发生的情况,以此检验系统在面对实际运行中可能遇到的各类问题时的反应和处理能力。故障注入技术(Fault Injection)正是基于此目的的一种常用方法。通过向软件...
### 分布式时序数据库的可扩展性和容错性 #### 一、分布式时序数据库的水平扩展机制 分布式时序数据库的核心优势之一在于其强大的水平扩展能力,即通过增加更多的计算节点来处理日益增长的数据负载。这种能力使得...
采用子网和概率模型对E-2DMesh网络在节点随机出错概率下的容错性进行分析,推出不同时间下的不同规模的E-2DMesh网络的连通概率下界,并且运用严密的数学方法推导出网络连通率与其节点出错概率的关系。实验结果表明以...
- 数据分布:LogDevice采用分布式存储,将日志分布在多个节点上,通过副本策略确保数据冗余和容错性。 - 负载均衡:系统自动平衡写入负载,确保各节点间的压力均衡,提高整体性能。 - 自动故障恢复:当某个节点...
然而,如同任何技术一样,ChatGPT并非完美无缺,尤其是在面对错误输入时,其容错性和纠正能力是需要重点关注和改进的领域。 首先,ChatGPT在处理错误输入时的容错性是一个关键问题。当用户输入的信息包含语法错误、...
联邦滤波结构性能与容错性分析 联邦滤波是一种两级滤波机构,公共参考子系统惯导的输出一方面给主滤波器,另一方面给各子滤波器作为量测值。各子系统的输出只给各自的滤波器。各子滤波器的局部估计值及其协方差阵...
在电子政务领域,提高配电网故障定位的容错性是一项至关重要的任务,因为这直接影响到电力系统的稳定运行和公共服务的连续性。标题所提及的"利用故障电流相对误差提高配电网故障定位容错性的方法"是一种创新的技术...
容错性设计是数据库课程设计中的一个高级主题,它要求学生不仅要理解数据库的基本概念和技术,还要掌握如何设计一个能够在各种故障面前保持持续可用的系统。通过实现数据备份、日志记录、检查点、数据分片、读写分离...