無論是桌面程式還是web程式,異常處理都是必須的. 一般的處理方式是, 捕獲異常,然後記錄異常的詳細資訊到文字檔案或者資料庫中.
在asp.net mvc中可以使用內建的filter——handleerror來處理程式發生的異常。接下來,來看看如何在我們的mvc專案中使用。
要讓handleerrorattribute特性工作,需要修改我們的web.config檔案配置
system.webhandleerrorattribute 特性能夠在action, controller, 和global 三個級別中使用>
...<
customerrors
mode
="on"
defaultredirect
="error.htm"
/>
system.web
>
在action方法上使用,非常簡單,只需要在方法頭上加上handleerror特性,告訴mvc如果該action方法出現異常,交由handleerror特性處理
[handleerror(exceptiontype = typeof(system.data.dataexception), view = "上面例子中,當在執行index方法的時候,如果發生資料庫異常, mvc 將會顯示databaseerror")]
public actionresult index(int
id)
databaseerror
view. 所以需要在views\shared\下面建立乙個databaseerror.cshtml。
同action相似,只需要簡單的將改特性放到controller類頭上,告訴mvc如果該controller中的action方法出現異常,都交由handleerror特性處理
[handleerror(exceptiontype = typeof(system.data.dataexception), view = "預設的, asp.net mvc已經把handleerror特性註冊成global. 這裡你可以新增自定義的filterdatabaseerror")]
public
class
homecontroller : controller
public一定要注意, 全域性的filter是依照它們註冊的順序執行的。所以如果有多個filter, 要在註冊其它fileter之前註冊error filterstatic
void
registerglobalfilters(globalfiltercollection filters)
); filters.add(
new handleerrorattribute()); //
by default added
}
當然,你也可以在註冊global filter的時候,指定它們的順序。下面的**是指定了順序的,和上面的等價。
public沒有辦法記錄錯誤日誌static
void
registerglobalfilters(globalfiltercollection filters),1
);}
它只捕獲http 500錯誤, 但是不捕獲其它型別的http錯誤,比如404, 401等。
如果是在ajax請求的情況下,返回的錯誤view,對於ajax訪問沒有任何意義。如果在ajax請求出錯的情況下,返回json對於客戶端的處理就容易和友好的多。
我們可以通過繼承handleerror
filter來實現自己的異常處理filter. 下面的filter, 實現了在出現錯誤的時候,記錄異常日誌和在ajax請求異常的情況下,返回json物件.
以上就是在mvc開發中,自己常用到的一些小技巧,希望對大家有幫助。
在MVC中處理異常的總結
無論是桌面程式還是web程式,異常處理都是必須的.一般的處理方式是,捕獲異常,然後記錄異常的詳細資訊到文字檔案或者資料庫中.在asp.net mvc中可以使用內建的filter handleerror來處理程式發生的異常。接下來,來看看如何在我們的mvc專案中使用。要讓handleerrorattr...
MVC 中建立自己的異常處理
1.新建類乙個類繼承 handleerrorattribute 類把異常書寫到佇列中 1 public class myexceptionattribute handleerrorattribute 215 2.在 filterconfig 註冊我們自定義的異常處理類 public class fi...
MVC全域性異常處理
異常的方式是在web form時代我們 起碼是我 常用的方式,但是在mvc 時代到臨的時候,這些處理是否更容易呢?答案是肯定的,因為技術是在不斷進步的嘛。在mvc中我們對於已知的異常資訊仍然會採用try catch的方式,並且是很常用的方式,但是對於驗證使用者登陸或者catch未捕獲的異常資訊 當然...