【发布时间】:2015-04-14 12:31:57
【问题描述】:
试图为我的最后一个问题 (https://stackoverflow.com/questions/29539767/sql-nhibernate-exceptions-with-sqlite-and-c-sharp-and-known-error-codes) 找到解决方案,我决定用我自己的自定义错误来包装所有异常。到目前为止,这是我的代码:
public Exception Convert(NHibernate.Exceptions.AdoExceptionContextInfo exInfo)
{
var sqle = (System.Data.SQLite.SQLiteException)exInfo.SqlException;
var errorDescription = exInfo.SqlException.Message.ToString();
if (sqle != null)
{
//Definition of error codes (for SQLite) to catch and handle
switch (sqle.ErrorCode)
{
//Most possible error in our project: case 19
case 19:
return new ConstraintViolationException(exInfo.Message,
sqle.InnerException);
case 5:
return new DbLockedException();
case 6:
return new TableLockedException();
case 8:
return new ReadOnlyDbException();
case 9:
return new InterruptException();
case 10:
return new IOException();
case 11:
return new DbCorruptException();
我从这里遵循了自定义异常的想法:Returning a custom exception
现在我面临一个问题:
因为我们正在使用 NHibernate。我们希望保持我们的代码数据库独立。使用您可以看到的代码,它只适用于 SQLite。
- 有谁知道或知道如何管理错误以 无论我使用哪个数据库,都能抓住它们?
如果你想让你的程序独立于数据库,代码错误不是一个好主意,因为每个数据库都有自己的代码错误和异常。
感谢您的提醒!
【问题讨论】:
标签: c# exception nhibernate error-handling