【发布时间】:2014-12-22 08:46:30
【问题描述】:
我有一个代码正在运行,我需要使用以下代码将异常保存到 SQL Server 数据库中:
public void AcieveSomething()
{
//Datatype Declarations
string ApplicationName = "App_Name";
string ClassName = "Class_Name";
string MethodName = "Achieve Something";
try
{
//Main part of the code
}
catch(Exception ex)
{
//Calling function to input the error into DB
ErrorLog.WriteErrorLog(ex, ApplicationName, ClassName, MethodName);
}
}
如果我要将ex 值放入数据库,SQL Server 数据库中Exception ex; 的数据类型是什么?
【问题讨论】:
-
主要应该得到消息,innerException和stackTrace
-
1) SSMS 不是数据库;它是连接到 SQL Server 数据库的工具 2) 对于每种 .NET 类型,没有直接的 SQL 等效项。相反,您应该将异常分解为相关部分,例如异常类型(
ex.GetType().Name)、消息(ex.Message)等名称。 -
您可以使用异常消息存储在数据库中。通过使用消息方法。(ex.Message 或 ex.InnerException)
-
@Sarbanjeet 如果要存储
Exception,则应始终使用ex.ToString()来捕获异常消息和堆栈跟踪,并对可能遇到的任何内部异常执行相同的操作。一直走下去,直到您检索到所有内部异常,并将它们作为字符串存储在您的数据库中。 -
@SandySands 是的,它应该存储为字符串。我同意你的观点。
标签: c# sql-server exception