NHibernate源码的异常处理方法

 我来答
世纪网络17
2022-11-20 · TA获得超过5944个赞
知道小有建树答主
回答量:2426
采纳率:100%
帮助的人:141万
展开全部

  NHibernate所有的异常处理都派生自HibernateException类 发生在数据库层的原生异常被保留 没做处理

  HibernateException类派生自系统的ApplicationException类 ApplicationException解释如下

  The exception that is thrown when a non fatal application error occurs

  抛出一个非致命的程序异常 HibernateException类的Serializable关键字 表明可以被序列化 可以保存成文件下来以做分析

  系统中很多异常处理类 发生重要错误或异常时用log net记录下信息

  看看NHibernate在事务提交时的异常处理方法

  public void Commit()

  {

  using (new SessionIdLoggingContext(sessionId))

  {

  CheckNotDisposed();

  CheckBegun();

  CheckNotZombied();

  log Debug( Start Commit );

  if (session FlushMode != FlushMode Never)

  {

  session Flush();

  }

  NotifyLocalSynchsBeforeTransactionCompletion();

  session BeforeTransactionCompletion(this);

  try

  {

  trans Commit();

  log Debug( IDbTransaction Committed );

  mitted = true;

  AfterTransactionCompletion(true);

  Dispose();

  }

  catch (HibernateException e)

  {

  log Error( Commit failed e);

  AfterTransactionCompletion(false);

  mitFailed = true;

  // Don t wrap HibernateExceptions

  throw;

  }

  catch (Exception e)

  {

  log Error( Commit failed e);

  AfterTransactionCompletion(false);

  mitFailed = true;

  throw new TransactionException( Commit failed with SQL exception e);

  }

  finally

  {

  CloseIfRequired();

  }

  }

  }

  其中 Don t wrap HibernateExceptions表明这样处理不会清掉已经发生的HibernateExceptions信息 就是在执行过程中抓到了其他的HibernateExceptions类型的异常就向上抛 这就是自定义异常处理的好处 Commit failed with SQL exception表明数据库sql事务提交执行出错 向上抛出HibernateExceptions类型的错误信息 因为都派生自HibernateException类

  同类就throw 不是同类就throw个message

lishixinzhi/Article/program/net/201311/13778

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
威孚半导体技术
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层... 点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式