相关疑难解决方法(0)

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

大多数时候我会使用异常来检查代码中的条件,我想知道什么时候使用断言是合适的时间?

例如,

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)

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

看起来我从不在生产代码中使用断言,只在单元测试中看到断言.我知道在大多数情况下,我可以使用异常来执行上面的检查,但我想知道"专业"的适当方式.

java exception assertion

114
推荐指数
4
解决办法
4万
查看次数

处理ThreadPoolExecutor的异常

我有以下代码片段,它基本上扫描需要执行的任务列表,然后将每个任务提供给执行程序执行.

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

17
推荐指数
2
解决办法
2万
查看次数