zoukankan      html  css  js  c++  java
  • Atitit 流水线子线程异常处理 1.1. 大概原理是 FutureTask排除异常 FutureTask.get can throw ExecutionException,can catc

    Atitit 流水线子线程异常处理

    1.1. 大概原理是 FutureTask排除异常 FutureTask.get   can throw ExecutionException,can catch this ex... 1

    1.2. code 1

    1.1. 大概原理是 FutureTaskt throw 异常 FutureTask.get   can throw ExecutionException,can catch this ex...

    Throwable cause = e.getCause(); 

    if(cause.getMessage().contains("sub task err"))

    {

    RunEx re=(RunEx) cause;

    System.out.println(JSON.toJSONString( re.returnObj));

    System.out.println();

    }else

    ExUtil.throwExV2(e);

     

     

    1.2. code

    package com.cnhis.cloudhealth.clinical.clidoctor.clisendadvice.bo;

    import java.util.Map;

    import java.util.concurrent.Callable;

    import java.util.concurrent.ExecutionException;

    import java.util.concurrent.FutureTask;

    import com.alibaba.fastjson.JSON;

    import com.cnhis.cloudhealth.commons.util.oplogutil.AsynUtil;

    import com.cnhis.cloudhealth.util.ExUtil;

    import com.cnhis.cloudhealth.util.RunEx;

    import com.google.common.collect.Maps;

    public class FuturetaskExTest {

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    FutureTask tsk= subtask();

    System.out.println("--");

    try {

    tsk.get();

    } catch (InterruptedException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    } catch (ExecutionException e) {

    Throwable cause = e.getCause(); 

    if(cause.getMessage().contains("sub task err"))

    {

    RunEx re=(RunEx) cause;

    System.out.println(JSON.toJSONString( re.returnObj));

    System.out.println();

    }else

    ExUtil.throwExV2(e);

    }

    //System.out.println("--");

    }

    public static FutureTask subtask() {

    FutureTask<Object> FutureTask_updateCviBdj=new FutureTask( new Callable<Object>() {

      @Override

      public Object call()   { 

      System.out.println("--e in sub thread");

      

      if("a".equals("a"))

      {

      Map m=Maps.newConcurrentMap();m.put("k", "vv");

       throw new RunEx("sub task err",m);

       

      }

      return "err";

      }

      }) ;

      

       AsynUtil.execMeth_Ays( FutureTask_updateCviBdj,"");

    return FutureTask_updateCviBdj;

    }

    }

  • 相关阅读:
    VS2015 C#取消最大化按钮,设置鼠标不可调整窗体大小
    C++调用C#编写的DLL【转】
    C#封装成DLL,并在C#中调用
    ubuntu永久修改主机名
    Anaconda3的安装和汉化
    windows下面安装Python和pip教程
    pip install bs4安装失败
    Sublime text 3中文汉化教程
    Vmware安装ubuntu详细教程
    Sublime text3修改tab键为缩进为四个空格
  • 原文地址:https://www.cnblogs.com/attilax/p/15197668.html
Copyright © 2011-2022 走看看