一尘不染

何时使用断言以及何时使用异常

java

在大多数情况下,我将使用异常来检查代码中的条件,我想知道何时才是使用断言的适当时间?

例如,

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
}

您能指出断言如何适合这里吗?我应该使用断言吗?

似乎我从未在生产代码中使用断言,而仅在单元测试中看到断言。我确实知道,在大多数情况下,我可以像上面一样使用异常来进行检查,但是我想知道“专业”地执行异常的适当方法。


阅读 208

收藏
2020-09-09

共1个答案

一尘不染

断言应用于检查不应发生的事情,而异常应用于检查可能发生的事情。

例如,一个函数可能会被0除,因此应该使用异常,但是可以使用一个断言来检查硬盘驱动器突然消失。

断言将阻止程序运行,但是异常将使程序继续运行。

请注意,这if(group != null)不是断言,而只是有条件的。

2020-09-09