假设我有下面的代码,它基本上确定一些条件匹配,然后分配布尔值,然后运行一些代码.如果booleanValue为false,则抛出异常.如果booleanValue为false而不运行其余代码,我希望它立即抛出异常怎么办?如果我只是将第二个条件语句放入第一个条件语句中,则会有重复的代码.请告诉我一个聪明的方法(我已修改代码看起来像我的实际代码).
boolean booleanValue = false; Permission value; if (someCondition) { value = getPermission_1(); booleanValue = someMethod(value); useValue_1(value); } else { value = getPermission_2(); booleanValue = anotherMethod(value); useValue_2(value); } if (!booleanValue) { throw Exception(); }
解决方法
如何消除布尔变量?您可以像这样重写代码:
if (someCondition) { if (!someMethod()) { throw new Exception(); } some codes... } else { if (!anotherMethod()) { throw new Exception(); } some codes... }
这对我来说看起来更容易,但这样的事情是品味的问题……
额外优势:如果异常以堆栈跟踪结束,您就知道条件是什么,因为您有两个不同的throw语句.这可能会加快调试速度.