我正在将scala'try / catch'测试代码转换为使用'拦截'
有没有我不应该使用'拦截'的情况?使用“拦截”而不是“尝试/捕获”的唯一好处是简洁?
答案 0 :(得分:8)
我认为主要区别在于intercept
有一个语义,表明您获得的异常是预期的,而不是由程序错误引起的。
因此,当用户输入错误或类似情况时,测试异常的测试用例将正常抛出时,我通常只使用intercept
。
答案 1 :(得分:7)
其中一个实际优点是intercept
也会返回Exception
,因此您可以这样检查:
intercept[IndexOutOfBoundsException](s charAt -1).getMessage should be === "..."