大多数时候我会使用异常来检查代码中的条件,我想知道什么时候使用断言是合适的时间?
例如,
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
}
Run Code Online (Sandbox Code Playgroud)
你能指出断言如何适应这里吗?我应该使用断言吗?
看起来我从不在生产代码中使用断言,只在单元测试中看到断言.我知道在大多数情况下,我可以使用异常来执行上面的检查,但我想知道"专业"的适当方式.
我有以下代码片段,它基本上扫描需要执行的任务列表,然后将每个任务提供给执行程序执行.
该JobExecutor反过来又创造了另一个执行人(做数据库的东西...读取和写入数据队列),并完成任务.
JobExecutor返回Future<Boolean>提交的任务.当其中一个任务失败时,我想优雅地中断所有线程并通过捕获所有异常来关闭执行程序.我需要做哪些改变?
public class DataMovingClass {
private static final AtomicInteger uniqueId = new AtomicInteger(0);
private static final ThreadLocal<Integer> uniqueNumber = new IDGenerator();
ThreadPoolExecutor threadPoolExecutor = null ;
private List<Source> sources = new ArrayList<Source>();
private static class IDGenerator extends ThreadLocal<Integer> {
@Override
public Integer get() {
return uniqueId.incrementAndGet();
}
}
public void init(){
// load sources list
}
public boolean execute() {
boolean succcess = true ;
threadPoolExecutor = new ThreadPoolExecutor(10,10,
10, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(1024), …Run Code Online (Sandbox Code Playgroud) java concurrency multithreading exception-handling threadpoolexecutor