Flutter开发App的未来及其在各行业的应用潜力分析
881
2022-11-13
EA&UML日拱一卒-活动图::异常
UML和很多语言一样,都有异常处理机制。当系统发生不正常的情况时,处理机制会中断正常的处理流程,然后由内向外寻找异常处理器并激活它。
语义
异常表示一种非正常情况的发生阻止了正常的执行过程。它通常是系统底层在应对执行过程中出现的故障时所产生的。这种场景下的异常处理是一种被动的活动;也有另外一种场景,作为错误处理的一种方式,异常由一个动作(RaiseExceptionAction)显式的抛出。
这里仍然以解一元二次方程的流程举例。
内部的活动SolveEquationImpl中故意制造了两个会发生异常的场景:
a!=0,delta <0a==0,b==0
然后在SolveEquationImpl的处理外面增加了一个异常处理器,并将二者用中断流(闪电形箭头)连接起来。可以看下面的放大图。
这 种连接方式就表示,如果SolveEquationImpl活动中发生了MathException类型的异常,该处理器就会被激活。这里还有一个默 契:Create NullSolution拥有和它所保护SolveEquationImpl活动同样的输出参数(类型,数量),当异常处理结束后,它的输出会替代受保护 的SolveEquationImpl的输出。只有这样后续处理才会像异常根本就没有发生一样继续进行。
需要补充说 明的是如果发生的不是MathException类型(或派生类型)的异常,处理机制会继续在本层次中寻找合适的异常处理器,如果还是没有找到,就会到上 一个运行层次(这里就是SolveEquation的层次)寻找,如果系统的最外层还是没有找到的话,系统可能崩溃。
画法
增加终端流和异常处理器都是通过拖动活动图工具栏上的对应图标到活动图中来实现的。
异常处理器
中断流
最后
比较一下SolveEquationImpl和下面的例子,应该可以发现处理简化了不少。
同时,因为可以选择适当的层次进行异常处理,这也增加了灵活性。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~