国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

SQLServer拋出自定義異常,由C#程序俘獲之并進行相應的處理

2019-11-14 13:50:40
字體:
來源:轉載
供稿:網友

 

最近一直在找可以自定義異常,并用C#程序捕獲并進行相應的處理,試了很多方法都沒有成功。今天終于找到了不錯的方法。所以轉載并分享給大家。

摘自:http://www.survivalescaperooms.com/scottckt/archive/2007/12/07/986847.html

在 SQL Server 的存儲過程中根據業務邏輯的要求,有時需要拋出自定義異常,由C#程序俘獲之并進行相應的處理。SQL Server 拋出自定義異常和簡單,像這樣就可以了:RAISERROR('Rais Error1', 16, 1) WITH NOWAIT但定用什么樣的錯誤級別卻很講究,否則 C# 中的 catch 塊可能俘獲不到的。

SQL Servr 拋出自定義異常的方法一般這么寫就可以:RAISERROR('Rais Error1', 16, 1) WITH NOWAIT

其中數字 16 代表錯誤級別:錯誤級別從 0 到 25, 其中 19 到 25 是重大錯誤級別。

注:小于 0 的級別被解釋為 0,大于 25 的級別被解釋為 25。

任何用戶都可以指定 0 到 18 之間的錯誤級別。

19 到 25 級別的錯誤,只能由 sysadmin 角色的成員用 WITH LOG 選項指定。

19 到 25 級別的錯誤,將記錄到錯誤日志和應用程序日志。

20 到 25 級別的錯誤,被認為是致命的;遇到致命的級別錯誤,客戶端的連接將在收到消息后終止。C# 中的 catch 塊中可以俘獲 錯誤級別 11 到 19 級別的異常。

0 到 10 級別的錯誤根本不進catch 塊;而 20 到 25 級別的異常,被認為是致命的,會被斷開數據庫連接。所以 C# cath 塊可以接受到這種異常,但異常的內容不是真正的異常內容,可能是類似這樣的內容:“在從服務器接收結果時發生傳輸級錯誤”。

        public void GetSqlError()

        {

            try

            {

                string connString = "Data Source=CCM02//SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;PassWord=sh2_123";

                string sql = "select * from Products";

                string raisError = "RAISERROR('Rais Error1', 16, 1) WITH NOWAIT";

                sql = sql + ";" + raisError;

                SqlConnection con = new SqlConnection(connString);

                SqlCommand cmd = new SqlCommand(sql, con);

                con.Open();

                cmd.ExecuteNonQuery();

                con.Close();

            }

            catch (Exception ex)

            {

                rtbValue.Text = ex.Message.ToString();

            }

        }

結果:

    rtbValue.Text的值為:“Rais Error1”


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河东区| 宁武县| 盱眙县| 宁化县| 江川县| 东安县| 阳曲县| 云梦县| 定日县| 吉隆县| 青州市| 辉县市| 浮梁县| 永嘉县| 股票| 罗平县| 桑植县| 大连市| 阜南县| 齐河县| 晋宁县| 抚远县| 临邑县| 德化县| 兰西县| 赞皇县| 宝清县| 安徽省| 高唐县| 蚌埠市| 黑水县| 扎囊县| 鹤山市| 海盐县| 柳州市| 福鼎市| 蕲春县| 龙门县| 阳西县| 灵宝市| 二连浩特市|