关于和数据库交互时的catch问题

ShadowInWind 2008-04-22 03:54:04
当我在后台用ExecuteNonQuery执行存储过程
然后运行时,当存储过程内放生错误,例如(主键冲突)之类的错误。
后台里,用catch能捕获到否。
如果能,那是catch什么Exception?
...全文
161 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
ShadowInWind 2008-04-25
  • 打赏
  • 举报
回复
自己测了1天。我终于确认了,理论上是catch不到的。。。靠~
lovehongyun 2008-04-24
  • 打赏
  • 举报
回复
在存储过程里要建立异常机制.遇到错误要rollback你的数据..

过程中可以通过返回值/输出参数来通知你的程序过程中有错误.!

qawszx 2008-04-24
  • 打赏
  • 举报
回复
try
{

}
catch(Exception ex)
{
Response.Write(ex.Message.Trim()); //错误信息
}
mylibin 2008-04-24
  • 打赏
  • 举报
回复
自己看看
ShadowInWind 2008-04-24
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 lovehongyun 的回复:]
在存储过程里要建立异常机制.遇到错误要rollback你的数据..

过程中可以通过返回值/输出参数来通知你的程序过程中有错误.!
[/Quote]

那这样看来,在后台里是应该catch不到存储过程中的异常的咯?因为如果能catch到,就不需要通过返回值来通知了,是这个意思不?那为什么有很多人都说可以catch到呢?比如2楼的高手就是这个意思。
yww_poison 2008-04-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ShadowInWind 的回复:]
引用 10 楼 zxjnew 的回复:
可以在建存储过程的时候利用 定义output类型的参数作为异常返回值,在过程里面写catch并把错误保存到output参数中,执行完存储过程,先判断该参数,并通过该参数获取异常。

这个就是关键,如果可以在后台直接用catch捕获,那又用output做什么呢?
[/Quote]

catch是让你不收到系统错误,页面crash,catch了就可以仿佛sp运行没有错一般,然后把output输出到页面上。
一般可以结合Transaction来做,如果catch到错误,就rollback,那么对数据没有伤害。而前台可以得到有用的自己格式化过的信息。
chenguang79 2008-04-23
  • 打赏
  • 举报
回复
你自己故意错误执行一次,让系统抛出exception,然后catch这个exception看看是什么Exception就行了
这个方法不行吗
ShadowInWind 2008-04-23
  • 打赏
  • 举报
回复
没人了?顶起来。。。
ShadowInWind 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zxjnew 的回复:]
可以在建存储过程的时候利用 定义output类型的参数作为异常返回值,在过程里面写catch并把错误保存到output参数中,执行完存储过程,先判断该参数,并通过该参数获取异常。
[/Quote]
这个就是关键,如果可以在后台直接用catch捕获,那又用output做什么呢?
zxjnew 2008-04-22
  • 打赏
  • 举报
回复
可以在建存储过程的时候利用 定义output类型的参数作为异常返回值,在过程里面写catch并把错误保存到output参数中,执行完存储过程,先判断该参数,并通过该参数获取异常。
keyake863 2008-04-22
  • 打赏
  • 举报
回复
你可以在存储过程中捕捉错误
BearRui 2008-04-22
  • 打赏
  • 举报
回复
可以catch到存储过程内发生错误
ShadowInWind 2008-04-22
  • 打赏
  • 举报
回复
我关键就是想知道,如果用了存储过程,是否能catch到存储过程内发生错误!
ShadowInWind 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 BearRui 的回复:]
你自己故意错误执行一次,让系统抛出exception,然后catch这个exception看看是什么Exception就行了
[/Quote]
问题是我没catch到,但是很多人告诉我可以catch的。。。
zhangqingfu 2008-04-22
  • 打赏
  • 举报
回复
支持2楼
tinalucky 2008-04-22
  • 打赏
  • 举报
回复
呵呵,2楼说的是
shilei831115 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 BearRui 的回复:]
你自己故意错误执行一次,让系统抛出exception,然后catch这个exception看看是什么Exception就行了
[/Quote]

呵呵 此法绝对真实有效…… 如假包调……
BearRui 2008-04-22
  • 打赏
  • 举报
回复
你自己故意错误执行一次,让系统抛出exception,然后catch这个exception看看是什么Exception就行了
ShadowInWind 2008-04-22
  • 打赏
  • 举报
回复
数据库是orc的

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧