在大多数情况下,我将使用异常来检查代码中的条件,我想知道何时才是使用断言的适当时间?
例如,
Group group=null; try{ group = service().getGroup("abc"); }catch(Exception e){ //I dont log error because I know whenever error occur mean group not found } if(group !=null) { //do something }
您能指出断言如何适合这里吗?我应该使用断言吗?
似乎我从未在生产代码中使用断言,而仅在单元测试中看到断言。我确实知道,在大多数情况下,我可以像上面一样使用异常来进行检查,但是我想知道“专业”地执行异常的适当方法。
断言应用于检查不应发生的事情,而异常应用于检查可能发生的事情。
例如,一个函数可能会被0除,因此应该使用异常,但是可以使用一个断言来检查硬盘驱动器突然消失。
断言将阻止程序运行,但是异常将使程序继续运行。
请注意,这if(group != null)不是断言,而只是有条件的。
if(group != null)