【发布时间】:2018-05-12 10:45:52
【问题描述】:
在下面的代码中,我有一个 System.Data.Entity.Infrastructure.DbUpdateException 类异常的 catch 块。
我的问题是为什么我不能使用Exception 类来捕获我的代码中的每一个可能的异常并获取堆栈跟踪?
特定异常类型及其在多个 catch 块中的使用有何优势?
try
{
AddAdminUserInput input1 = JsonConvert.DeserializeObject<AddAdminUserInput>(input);
Foundation_Services_DL_DataEntities Db = DLMetadataContext.GetContext();
UserAccount account = new UserAccount
{
emplid = input1.emplid,
sso = input1.sso,
deptid = input1.deptid,
usertype = input1.usertype,
status = input1.status,
username = input1.username
};
Db.UserAccounts.Add(account);
Db.SaveChanges();
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("status", "0");
dict.Add("message", "User Addition Successful");
Context.Response.Write(JsonConvert.SerializeObject(dict));
}
catch (System.Data.Entity.Infrastructure.DbUpdateException dbev)
{
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("status", "1");
dict.Add("message", "User Addition Failed - User Already Exists");
Context.Response.Write(JsonConvert.SerializeObject(dict));
}
【问题讨论】:
-
My question is that why i can't use Exception class to catch each and every possible exception in my code?如果你这样做了,你会如何为不同的异常提供不同的status代码? -
您的问题的答案是您可以使用
Exception来捕获所有问题。如果您不使用细节来缩小问题的位置,那么当您遇到问题时,您将头疼识别和解决问题。 -
这是一个合法且可以回答的问题 - 我不理解近距离投票,除非它是一个骗子。
标签: c# asp.net exception-handling