当我在后台用ExecuteNonQuery执行存储过程
然后运行时,当存储过程内放生错误,例如(主键冲突)之类的错误。
后台里,用catch能捕获到否。
如果能,那是catch什么Exception?

解决方案 »

  1.   

    你自己故意错误执行一次,让系统抛出exception,然后catch这个exception看看是什么Exception就行了
      

  2.   

    问题是我没catch到,但是很多人告诉我可以catch的
      

  3.   

    我关键就是想知道,如果用了存储过程,是否能catch到存储过程内发生错误!
      

  4.   

    可以catch到存储过程内发生错误
      

  5.   

    可以在建存储过程的时候利用 定义output类型的参数作为异常返回值,在过程里面写catch并把错误保存到output参数中,执行完存储过程,先判断该参数,并通过该参数获取异常。
      

  6.   

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

  7.   

    你自己故意错误执行一次,让系统抛出exception,然后catch这个exception看看是什么Exception就行了
    这个方法不行吗
      

  8.   


    catch是让你不收到系统错误,页面crash,catch了就可以仿佛sp运行没有错一般,然后把output输出到页面上。
    一般可以结合Transaction来做,如果catch到错误,就rollback,那么对数据没有伤害。而前台可以得到有用的自己格式化过的信息。
      

  9.   

    try
    { }
    catch(Exception ex)
    {
    Response.Write(ex.Message.Trim()); //错误信息
    }
      

  10.   

    在存储过程里要建立异常机制.遇到错误要rollback你的数据..过程中可以通过返回值/输出参数来通知你的程序过程中有错误.!
      

  11.   


    那这样看来,在后台里是应该catch不到存储过程中的异常的咯?因为如果能catch到,就不需要通过返回值来通知了,是这个意思不?那为什么有很多人都说可以catch到呢?比如2楼的高手就是这个意思。
      

  12.   

    自己测了1天。我终于确认了,理论上是catch不到的靠~