我听说使用异常来控制程序流程是不好的做法。你对此有什么看法?
public static findStringMatch(g0, g1) {
int g0Left = -1;
int g0Right = -1;
int g1Left = -1;
int g1Right = -1;
//if a match is found, set the above ints to the proper indices
//...
//if not, the ints remain -1
try {
String gL0 = g0.substring(0, g0Left);
String gL1 = g1.substring(0, g1Left);
String g0match = g0.substring(g0Left, g0Right);
String g1match = g1.substring(g1Left, g1Right);
String gR0 = g0.substring(g0Right);
String gR1 = g1.substring(g1Right);
return new StringMatch(gL0, gR0, g0match, g1match, gL1, gR1);
}
catch (StringIndexOutOfBoundsException e) {
return new StringMatch(); //no match found
}
如果没有找到匹配项,那么ints的值将为-1。当我尝试取子字符串g0.substring(0, -1)
时,这会导致异常。然后该函数将返回一个指示未找到匹配项的对象。
这是不好的做法吗?我可以手动检查每个索引是否都是-1,但感觉这样更麻烦。
更新
我已经删除了try-catch块并使用以下代码进行替换:
if (g0Left == -1 || g0Right == -1 || g1Left == -1 || g1Right == -1) {
return new StringMatch();
}
哪种方法更好:检查每个变量是否为-1,还是使用布尔型变量foundMatch
来跟踪并在最后检查它?