健壮性(Robustness)

健壮性(Robustness)1 健壮性与正确性健壮性 系统在不正常输入情况下仍能表现正常的程度

大家好,欢迎来到IT知识分享网。

1、健壮性与正确性

健壮性:系统在不正常输入情况下仍能表现正常的程度。

  • 处理未期望的行为和错误终止;
  • 即使终止执行,也要准确/无歧义地向用户展示错误信息
  • 错误信息有助于debug

正确性:程序按照spec加以执行的能力,是最重要的质量指标

正确性 vs 健壮性

  • 正确性,永不给用户错误的结果;健壮性,尽可能保持软件运行而不是总是退出
  • 正确性倾向于直接报错,健壮性倾向于容错
  • 对外的接口,倾向于健壮性;对内的实现,倾向于正确性

2、错误和异常处理

Java的Throwable类中有两个子类:Exception和error。

  • Error;错误通常是内部的错误,比如VirtualMachineError等,对此程序员通常是无能为力的,一旦发生,想办法让程序优雅结束
  • Exception;是由程序导致的问题,可以捕获和处理

2.1 异常的类别

Exception主要分两类,Runtime Exception和其他Exceptions。Runtime Exception是程序源代码中引入的故障所造成的,主要包括了空指针调用,内存越界,类型转换失败,文件不存在等Exception

  • checked Exception必须被显式地捕获或者传递(try-catch-finally-throw),否则编译不通过;unchecked Exception可以不捕获或者抛出;
  • 当异常出现时,如果客户端可以通过某些方若法恢复异常,那么采用checked exception;如果客户端无法解决出现的异常,采用unchecked Exception,触发异常时,打印异常信息,程序终止;对于编程错误来说,尽量使用unchecked Exception
  • 如果client仅仅需要异常信息,可以简单抛出一个unchecked Exception;若需要明确造成Exception的具体原因,则需要checked Exception;

2.2 抛出异常

抛出异常的大致流程

  1. 找到一个能表达错误的Exception类/或者根据自己的需要构造一个新的Exception类
  2. 构造Exception类的实例,将错误信息写入
  3. 当程序出现相关异常时,throw;如果是checked Exception需要ttry-catch等方式捕获异常

简单实例:

public static boolean readFile(String filename) throws Exception{ 
    BufferedReader reader; try { 
    reader=new BufferedReader(new FileReader(new File(filename))); } catch (FileNotFoundException e) { 
    System.out.println("文件名输入错误,请重新输入"); return false; } ... } 

健壮性(Robustness)健壮性(Robustness)

最后,顺便提一下throw和throws的区别。throws用于方法的声明上,其后跟的是异常类名,后面可以跟多个异常类,之间用逗号隔开;throw用于方法体中,其后跟的是一个异常对象名。而且,throw的时候,如果throw抛的异常是Exception类的子类,那么必须有throws在方法上声明

2.3 自定义异常类

public class LocationException extends Exception{ 
    /* * 修改位置异常: * 变更位置后导致位置冲突 */ public LocationException(String msg) { 
   //构造方法 super(msg);//异常输出信息 } } 

自定义异常类的使用和Exception类的使用是类似的。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/125816.html

(0)
上一篇 2025-09-23 21:20
下一篇 2025-09-23 21:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信