`
tangkuo
  • 浏览: 103141 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Exception异常

 
阅读更多
public synchronized Throwable fillInStackTrace() {
        if (stackTrace != null ||
            backtrace != null /* Out of protocol state */ ) {
            fillInStackTrace(0);
            stackTrace = UNASSIGNED_STACK;
        }
        return this;
    }



public void setStackTrace(StackTraceElement[] stackTrace) {
        // Validate argument
        StackTraceElement[] defensiveCopy = stackTrace.clone();
        for (int i = 0; i < defensiv发eCopy.length; i++) {
            if (defensiveCopy[i] == null)
                throw new NullPointerException("stackTrace[" + i + "]");
        }

        synchronized (this) {
            if (this.stackTrace == null && // Immutable stack
                backtrace == null) // Test for out of protocol state
                return;
            this.stackTrace = defensiveCopy;
        }
    }


方法上加锁与代码块处理同步机制

lock 同步锁机制

异常处理  运行时异常与错误异常

private Lock lock = new ReentrantLock();
@Override
@Transactional(propagation = Propagation.REQUIRED)
public TtyResponse transferPayMoney(String orderId) throws TtyException {
HashMap<String, Object> params = new HashMap<String, Object>();
this.payCheck(orderId, params);

try{
lock.lock();
TtyResponse resp = this.queryPaymentType(params);
if(StringUtils.equals(RESP_CODE_FAIL, resp.getCode())
|| StringUtils.equals(RESP_CODE_WAYPAY, resp.getCode())){

resp = this.payMoney(params);
if(StringUtils.equals(this.RESP_CODE_FAIL, resp.getCode())){
this.updatePayTypeStatus(params, OrderStatus.CLOSED);
this.cancelTransfer(params);
} else if(StringUtils.equals(this.RESP_CODE_PROCESSING, resp.getCode())){

this.updateOrderStatus(params, OrderStatus.PROCESSING);
}
} else if(StringUtils.equals(RESP_CODE_PROCESSING, resp.getCode())){
return (new TtyResponse()).setCode(ITransferPayMoneyService.RESP_CODE_PROCESSING);

} else if(StringUtils.equals(RESP_CODE_SUCCESS, resp.getCode())){
this.transferSuccess(params);
return (new TtyResponse()).setCode(ITransferPayMoneyService.RESP_CODE_SUCCESS);
}
} finally{

lock.unlock();
}
return new TtyResponse();
}
分享到:
评论

相关推荐

    Oracle_存储过程exception异常处理大全及实例经典最终.docx

    Oracle 存储过程 exception 异常处理大全及实例经典最终 Oracle 存储过程 exception 异常处理大全及实例经典最终是 Oracle 数据库中存储过程的异常处理机制。异常处理是指在程序执行过程中出现的错误或未预料到的...

    优质资料(2021-2022年收藏)史上最全的Java中所有Exception异常中英文对照.docx

    1. `ArithmeticException`:当计算中出现除以零、非法运算等错误时,会抛出此类异常。 2. `ArrayIndexOutOfBoundsException`:当尝试访问数组的索引超出了数组的实际长度时,会抛出此类异常。 3. `...

    【独家高薪笔面试题库】与【实战配套练习演练】9.Exception异常1

    本篇将深入探讨“【独家高薪笔面试题库】与【实战配套练习演练】9.Exception异常1”中的相关知识点。 首先,我们来了解“检查异常”(Checked Exceptions)。这类异常通常是由外部条件引起,如文件不存在、网络连接...

    exception 异常处理 exception

    自定义异常是根据业务需求自定义的一类异常,通过继承 `Exception` 或其子类实现。在上述代码示例中,定义了一个名为 `MyException` 的自定义异常类,它继承了 `Exception`。 - **定义自定义异常类**: ```java ...

    C++Exception 异常处理 源码

    开发者可以创建自己的异常类,继承自`std::exception`或直接自定义,以便在特定情况下抛出更有意义的异常。 8. **异常传播**: 如果在`catch`块内部再次抛出异常,原始的异常会被丢弃,新的异常会替代它继续传播...

    JSqlParser4.3版本作者补丁版用于解析mysql中JSON_OBJECT函数抛出ParseException异常

    用于JSqlParser4.3版本解析mysql中JSON_OBJECT函数抛出ParseException异常问题,如下: // this is true SELECT JSON_OBJECT(key person value account,key personName value account_name) obj FROM tb_review_...

    java 常见Exception异常解决方法.docx

    Java 编程中常见的十种异常类型——包括 NullPointerException, ArrayIndexOutOfBoundsException, NumberFormatException, IOException, ClassNotFoundException, FileNotFoundException, SQLException, ...

    spring_exception异常处理

    好多项目都有容错机制 后台服务器报错后 不是讲错误信息直接发给用户 而是发送一个其他页面 你在上网的时候应该遇到过后台出错了 用户看到的页面是一个小孩在哭 提示页面找不到什么的

    使用Python将Exception异常错误堆栈信息写入日志文件

    假设需要把发生异常错误的信息写入到log.txt日志文件中去... raise Exception('发生异常错误信息') except: #方案一,自己定义一个文件,自己把错误堆栈信息写入文件。 #errorFile = open('log.txt', 'a') #errorFil

    Java将Exception信息转为String字符串的方法

    Java将Exception信息转为String字符串的方法 在 Java 编程中,异常机制是一种非常有用的... Java 将 Exception 信息转换为 String 字符串的方法可以帮助我们更好地处理和记录异常信息,从而提高程序的可靠性和维护性。

    多线程文件查询代码已解决PathTooLongException异常

    刚才看到一个多线程查询的代码,觉得那个代码只实现了单线程操作,并且使用的是.net操作类,如果路径超过256就会出现查询错误(PathTooLongException),最近也做过类似的查询操作,使用的是win32api来实现的。...

    Elasticsearch出现circuit_breaking_exception异常

    1. 产生Data too large异常 异常如下:CircuitBreakingException[[FIELDDATA] Data too large, data for [proccessDate] would be larger than limit of [xxxgb] 经排查,原来是ES默认的缓存设置让缓存区只进不出...

    c# 自定义异常 Exception

    `Exception`类是所有系统异常的基类,包含了描述错误的基本属性,如`Message`(错误消息)和`InnerException`(内部异常)。以下是一个简单的自定义异常类的示例: ```csharp public class CustomException : ...

    实验五 Java异常处理实验.docx

    上面的代码将抛出 ArithmeticException 异常,因为除零错误。我们可以使用 catch 语句捕获这个异常,例如: ```java class Example1 { static void method() { int a = 0; try { int b = 10 / a; } catch ...

Global site tag (gtag.js) - Google Analytics