健壮性和正确性
可靠性=正确性+健壮性
健壮性:面向用户
正确性:面向开发者
private方法只能保证正确性,但面向用户的还需保证健壮性
错误和异常
Error:不是由程序本身引起,由系统限制引起
Exception:自己程序导致的问题,可以捕获,处理
下面绿色的部分表示是由用户输入等引起的,是可预测的,在程序运行时处理
不需要实例化Error,也不需要捕获(捕获了也处理不了)
异常分为:运行时异常(RuntimeException)和其他异常
运行时异常是程序员代码里处理不当造成,其他异常由外部原因造成
Checked and unchecked exceptions
Unchecked exceptions = Error + RuntimeExceptions
两者区分:编译器是否能检查出(编译器不会检查Unchecked exception)
checked exception 必须捕获并指定错误处理器handler,否则编译无法通过
五个处理异常时使用的关键字:try,catch,finally,throws,throw
Unchecked异常也能用try/catch来进行捕获,但大多数时时不需要的,也不应该这样做——掩耳盗铃,对发现的编程错误充耳不闻!
尽量用unchecked exception来处理编程错误——使代码更易读
错误可预料,不可预防,但有手段从中恢复,用checked exception
规约中需要包含所有该方法抛出的checked exception
异常的抛出需要满足LSP原则(协变):子类不能比父类抛出更多、更宽泛的异常
可自定义异常类
异常发生后如果找不到处理器,就终止程序,在控制台打印出 stack trace
异常只有两种处理方法:向上抛 / 捕获
如果父类型的方法没有抛出异常,那么子类型中的方法必须捕获所有的checked exception
try- catch -finally:无论是否出现异常,finally块中包含的语句都会被执行(一般为对资源的释放、管理等)
多个catch块不是依次顺序执行的,而是并发的,哪一个最匹配就执行哪一个
finally会在执行完try/catch块之后再执行
标签:exception,健壮性,捕获,finally,课程,思考,catch,软件,异常 From: https://www.cnblogs.com/zzzzzzx/p/17419978.html