作为我的代码的一部分,@Transactional
带注释的方法。在某些情况下,该方法会抛出自定义异常并执行回滚。每当发生这种情况时,方法调用会产生TransactionSystemException
并且无法获得原始的自定义异常(它不是Exeption的根本原因)。
我可以以某种方式访问我的方法抛出的原始异常吗? 我可以阻止spring抛出TransactionSystemException,但仍然会回滚吗?
@Transactional
public Association create(Long accountId) {
// if association already exists, throw exception
throw new ErrorInfoException(ErrorInfo.duplicateAssociation(accountId).info("This Association already exists").build());
}
答案 0 :(得分:1)
不确定如何管理该方法之外的异常,但是您需要捕获 function retrievePermissions(fileId, callback) {
var request = gapi.client.drive.permissions.list({
'fileId': fileId
});
request.execute(function (resp) {
callback(resp.items);
});
}
retrievePermissions(self.realtimeDocId, function (resp) {
resp;
});
,然后在您的情况下调用TransactionSystemException
,因为您的自定义异常应首先在堆栈上:< / p>
返回之前抛出的应用程序异常 交易异常,如果有的话。
如果出于某种原因,中间会有更多例外情况,那么请根据规范选择getApplicationException()
:
返回第一个在失败中抛出的异常 transaction:即应用程序异常(如果有)或者 TransactionSystemException的原因。
如果您使用Exception的getOriginalException()
方法,那么在这种情况下可能不是正确的方法。