講解asp.net的異常處理機(jī)制_.Net教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:整站如何防止SQL攻擊asp.net 網(wǎng)站 防止SQL注入 攻擊,通常的辦法是每個(gè) 文件都修改加入過濾代碼,這樣很麻煩,下面介紹一種辦法,可以從整個(gè)網(wǎng)站防止注入。 只要做到以下三點(diǎn),網(wǎng)站就會(huì)比較安全了而且維護(hù)也簡(jiǎn)單。 一、數(shù)據(jù)驗(yàn)證類 parameterCheck.cs publicclassparameterCheck{
簡(jiǎn)介程序開發(fā)中,數(shù)據(jù)流按照一定的規(guī)律進(jìn)行傳輸,如果用戶和程序之間的交互完全按照預(yù)定的效果運(yùn)行,程序不會(huì)出現(xiàn)問題。可以假設(shè)所處理的數(shù)據(jù)都符合要求,通過界面作格式判定,所有資源都正確,但是為了系統(tǒng)的安全,需要處理存在的隱患,不能對(duì)數(shù)據(jù)安全抱有理想化的想法。
在ASP.NET中,錯(cuò)誤處理分為兩個(gè)層面:頁面輸入信息驗(yàn)證、CLR提供的結(jié)構(gòu)化錯(cuò)誤處理機(jī)制。在頁面輸入信息判斷中,可以采用JavaScript、VBScript等腳本進(jìn)行判斷,也可以使用.NET 環(huán)境下帶有的Validation和正則表達(dá)式的方式將信息在提交執(zhí)行處理前,進(jìn)行格式判斷。格式判斷包括:網(wǎng)絡(luò)地址、電子信箱、輸入字符串長(zhǎng)短和輸入信息的數(shù)據(jù)類型的判斷等。
結(jié)構(gòu)化異常處理是CLR的基礎(chǔ)部分,具有以下特點(diǎn):可以跨語言,異常可以在一種語言中引發(fā),在另外一種語言中捕捉處理;分層處理,一個(gè)異常可以包括另外一個(gè)異常,這意味著系統(tǒng)可以捕獲底層對(duì)象(如數(shù)據(jù)層和業(yè)務(wù)層)的異常,引發(fā)自己的異常,包含有底層對(duì)象的異常。這樣可以將異常進(jìn)行細(xì)致分類,使得異常更容易處理。
結(jié)構(gòu)化異常處理,一般要使用3部分代碼。
(1)Try:是程序中可能出現(xiàn)錯(cuò)誤的操作部分。
(2)Catch:是用來處理各種錯(cuò)誤的部分(可以有多個(gè))。必須正確排列捕獲異常的Catch子句,范圍小的Exception放在前面的Catch。即如果Exception之間存在繼承關(guān)系,就應(yīng)把子類的Exception放在前面的Catch子句中。
(3)Finally 塊的代碼用來清理資源或執(zhí)行要在Try塊末尾執(zhí)行的其他操作(可以省略)。無論是否產(chǎn)生異常,F(xiàn)inally塊都會(huì)執(zhí)行。
結(jié)構(gòu)化異常處理
異常是在程序設(shè)計(jì)中無法避免的錯(cuò)誤,設(shè)計(jì)的程序必須能夠處理所有可能出現(xiàn)的錯(cuò)誤。所以要全面考慮異常處理,將一切可能出現(xiàn)異常的代碼都進(jìn)行try的捕捉,然后建立自己的異常處理機(jī)制,按照不同的異常情況進(jìn)行分類處理。
異常產(chǎn)生的時(shí)候,需要知道是什么原因造成的錯(cuò)誤以及錯(cuò)誤的相關(guān)信息。根據(jù)實(shí)際情況拋出具體類型的異常,然后建立捕捉機(jī)制,捕捉到異常時(shí)做出具體的處理。在編寫代碼過程中,可以使用系統(tǒng)已定義的相關(guān)異常類以及自定義的異常類來實(shí)例化并拋出需要的異常。如一個(gè)不可能實(shí)現(xiàn)的接口,可以拋出System.NotSupportedExceptiion的異常來告訴接口的調(diào)用者。
在處理異常的時(shí)候,應(yīng)該將可處理的具體異常分別在catch 塊中作出相應(yīng)處理,否則程序?qū)⒔K止運(yùn)行。針對(duì)每一種異常,以不同方式處理,避免對(duì)所有異常做出一樣的處理。并且在異常產(chǎn)生時(shí),給用戶一個(gè)友好的提示(最終用戶對(duì)系統(tǒng)異常的具體內(nèi)容是不明白的,這就需要給出相關(guān)的信息提示和解決方案,或告訴聯(lián)系管理員等),并在可能的情況下給用戶提供選擇(確定和取消),讓用戶來決定系統(tǒng)的運(yùn)行方向。同時(shí),程序中要將異常做日志記錄。不是所有異常都是必須記錄的,例如一些可捕捉并且已經(jīng)安排程序進(jìn)行處理的異常就不需要記錄它。
分享:總結(jié).NET開發(fā)中ADO.NET的應(yīng)用一、DataTable DataTable表示內(nèi)存中數(shù)據(jù)的一個(gè)表,它完全是在內(nèi)存中的一個(gè)獨(dú)立存在,包含了這張表的全部信息。DataTable可以是從通過連接從數(shù)據(jù)庫(kù)中讀取出來形成的一個(gè)表,一旦將內(nèi)容讀到DataTable中,此DataTable就可以跟數(shù)據(jù)源斷開而獨(dú)立存在;也可以是完
相關(guān).Net教程:
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過程實(shí)現(xiàn)分頁示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- asp.net如何連接sql server2000數(shù)據(jù)庫(kù)
- asp.net中Word轉(zhuǎn)Html的辦法(不需要WORD組件)
- 一個(gè)不被flash、select、activex遮擋的、跨frame的無限分級(jí)菜單
- 如何以及為何創(chuàng)建Search .NET版
- asp.net 獲取客戶端IP與mac
- 解讀.net垃圾回收和CLR 4.0對(duì)垃圾回收所做的改進(jìn)之一
- asp.net編程中實(shí)現(xiàn) MD5 加密
- 淺談.net程序員,該不該學(xué)IL?
- 如何利用.NET Framework使用RSS feed
- 談asp.net會(huì)話狀態(tài)
- 相關(guān)鏈接:
- 教程說明:
.Net教程-講解asp.net的異常處理機(jī)制
。