ASP.NET 如何catch存储过程中抛出的异常信息
修改资料库的时候,我们要做一些判定,比如输入的资料不能为空、资料已存在或与其它表的资料关联不能删除等等。
输入的资料不能为空,这些都直接交由逻辑层去处理,而资料已存在呀、关联呀等等,这部分推荐让数据层去执行,但怎么返回提示信息并提示用户呢?catch是个不错的选择!
当你要新增一笔资料的时候,不要做类似于“Sql = Insert into [tableName] values(....);"这样的处理,直接调用存储过程就好了,假定存储过程的名称为[test_prc]
那它的代码类似于下面这样子:
1 CREATE PROCEDURE [dbo].[test_prc]( 2 @formNo nvarchar(20), --单号 3 @formName nvarchar(10) --名称 4 ) 5 AS 6 BEGIN 7 declare 8 9 @Error_Msg nvarchar(200) 10 11 --检查是否为空值 12 IF ISNULL(@formNo,'')='' or ISNULL(@formName,'')='' 13 BEGIN 14 set @Error_Msg = '单号、名称等不能为空值' 15 RAISERROR(@Error_Msg,16,1) WITH NOWAIT 16 return 1 17 END 18 19 --检查程序文件是否存在 20 IF exists (select 1 from [tableName] where formNo=@formNo and formName=@formName) 21 BEGIN 22 set @Error_Msg = '单号'+@formNo+',名称'+@formName+'已存在,不允许增加' 23 RAISERROR(@Error_Msg,16,1) WITH NOWAIT 24 return 1 25 END 26 27 28 --新增 29 INSERT INTO [tableName] 30 ([formNo] 31 ,[formName] 32 ) 33 VALUES 34 (@formNo 35 ,@formName 36 ) 37 END
有了以上代码之后,那我们就在程序中使用try...catch对这些异常信息做捕捉处理,如下:
1 #region 成员方法 2 /// <summary> 3 /// 添加资料 4 /// </summary> 5 /// <param name="formNo">单号</param> 6 /// <param name="formName">名称</param> 7 /// <returns></returns> 8 public bool Do_Process_Add_Info(string formNo, string formName) 9 { 10 bool result = true; 11 SqlParameter[] oSqlParameter = 12 { 13 new SqlParameter("@formNo",SqlDbType.NVarChar,20) , 14 new SqlParameter("@formName",SqlDbType.NVarChar,10) 15 }; 16 try 17 { 18 //赋值 19 oSqlParameter[0].Value = formNo; 20 oSqlParameter[1].Value = formName; 21 22 sqlHelper.SP_ExecuteNonQuery("test_prc", oSqlParameter); //sqlHelper是实例化的用于操作数据库的实例! 23 } 24 catch (Exception err) 25 { 26 result = false; 27 System.Windows.Forms.MessageBox.Show(err.Message); 28 //或者在网页中弹框 29 //Response.Write(err.Message); 30 } 31 return result; 32 }
好了,通过这样子,只要调用这个 Do_Process_Add_Info(string formNo, string formName) 方法就可以了,什么代码逻辑都不用修改,应该有的提示它全有了,呵呵。不知道触发器上面能不能这样子搞呢,呵呵。
转载于:https://www.cnblogs.com/seasons1987/archive/2012/12/07/2806689.html
ASP.NET 如何catch存储过程中抛出的异常信息相关推荐
- 获取线程中抛出的异常信息
1 ScheduledExecutorService service = Executors.newScheduledThreadPool(10); 2 // 从现在开始delay毫秒之后,每隔一天执 ...
- 第8集析构函数中抛出的异常
前两篇文章讨论了对象在构造过程中(构造函数)和运行过程中(成员函数)出现异常时的处理情况,本文将讨论最后一种情况,当异常发生在对象的析构销毁过程中时,又会有什么不同呢?主人公阿愚在此可以非常有把握地告 ...
- 第7集 构造函数中抛出的异常
上一篇文章简单讨论了一下对象的成员函数抛出异常时的处理情况.本文中将继续讨论当在构造函数中抛出异常时,程序的执行情况又如何?这有点复杂呀!而且主人公阿愚还觉得这蛮有点意思! 构造函数中抛出的异常 1. ...
- 想抛就抛:Application_Error中统一处理ajax请求执行中抛出的异常
想抛就抛:Application_Error中统一处理ajax请求执行中抛出的异常 参考文章: (1)想抛就抛:Application_Error中统一处理ajax请求执行中抛出的异常 (2)http ...
- 如何Mysql触发器中抛出一个异常
当想Mysql出发其中插入或者更新一条数据的时候,我希望使用触发器进行一些检查工作.虽然这些工作可以使用PHP来完成,但考虑到公司做PHP的小伙子是个新手,为了简化PHP端的业务,使用触发器来实现可靠 ...
- java 抛出指定异常信息_java 抛出异常处理的方法
java 抛出异常处理的方法 为了避免调用的人不知道有异常,才抛出异常的,所以是谁掉用的久在哪里处理.说的对吗 对. 1.throws关键字通常被应用在声明方法时,用来指定可能抛出的异常.多个异常可以 ...
- java异常怎么输出到页面_怎么把抛出的异常信息输出到SWING 界面上
展开全部 首先抛出异常e68a84e8a2ad3231313335323631343130323136353331333337623366,然后捕获异常,最后把异常信息输出到SWING界面组件 代码参 ...
- NET问答: 如何将 ASP.NET Core WebAPI 中抛出的异常封装成对象?
咨询区 rianjs: 在 ASP.NET Core WebAPI 中,我的 Controller 代码如下: [Route("create-license/{licenseKey}&quo ...
- 如何友好的处理 WebApi 中抛出的错误
微软的 ASP.NET Web API 是一个轻量级的web框架,可用来构建基于 http 无状态的rest服务,异常是一种运行时错误,异常处理是一种处理运行时错误的技术,每一个开发者都应该知道如何处 ...
最新文章
- android 电话 状态栏,Android透明式状态栏、导航栏实现
- 机器学习02线性回归、多项式回归、正规方程
- c语言定义5个元素数组, 对数组进行从小到大排序,定义一个5行5列的二维数组,并动态赋值,将第3列的数组进行从小到大的排序...
- aspose.cell for java 去水印_【Java编程基本功】(十)输出杨辉三角,输出*号,数组移动...
- C语言——结构体数组的使用案例(如何判断两个矩形是否相交,其中一个是否包含在另外一个里面,点是否在矩形中)...
- VS2010 修改全局 include目录
- oracle查看脚本,oracle 查看表空间的脚本
- 【炮灰模型】 让数学建模来控制你的爱情,测测你是否是那个炮灰
- 关于金格电子签章的使用问题处理
- Java GUI+MySQL 银行管理系统初级(课程设计)
- 计算机系统时间错了,电脑时间同步出错怎么办
- c++编译STL文件反转其法线
- 爬取拉勾网招聘信息笔记
- 操作——【1.8 关于音高、时值、位置 】(二)
- Receptive field 感受野 原理+计算+图解+空洞卷积hole
- circos 可视化手册- text 篇
- 【汇编语言】【ARM扩展资料】硬件组成
- iOS - 添加代码片段(Code Snippets)
- 你对浏览器的兼容性有了解吗?
- mooc幕课零基础学Java语言(翁恺)if-else语句比较三个数, 输出最大值