throw的一些用法
無論是.net還是java,在開發(fā)程序時都難免會用到throw關(guān)鍵字,對于初學(xué)者一般會認為它與try...catch捆綁在一起,這當然是錯誤的,事實上,throw的一個最重要的作用就是:
讓程序告訴用戶一些事情,這些事情一般是開發(fā)人員之前定義好的,如對于一個輸入文本框,你需要輸入給定數(shù)字,但如果輸入的不是給定的數(shù)據(jù)范圍,則可以通過throw告訴用戶!
讓程序告訴開發(fā)人員一些事情,這些事情一般是底層開發(fā)人員之前定義好的,如果一些業(yè)務(wù)規(guī)范,如果開發(fā)人員輸入的不合法,程序就會拋出一個異常,以告訴表層開發(fā)人員!
下面是一個程序中的throw用法:
if (vp.ContainsKey("flag"))
{
int flagValue;
int.TryParse(vp["flag"].ToString(), out flagValue);
switch (flagValue)
{
case 0:
linq = linq.Where(i => i.EndTime > DateTime.Now);
break;
case 1:
linq = linq.Where(i => i.EndTime <= DateTime.Now);
break;
case 2:
//...break;
default:
throw new ArgumentException("參數(shù)不正確");
}
}
上面的代碼,由前臺用戶傳入一個參數(shù),這邊于程序處理,這里不考慮擴展,所以使用了switch塊(對于業(yè)務(wù)多變的情況下,我們可以使用策略模式,工廠模式去代替switch這個代碼壞味道),當你輸入的參數(shù)不到給定的case條件時,就會向上拋出異常,以告訴用戶!當然默認情況下會以黃屏的樣子出現(xiàn),我們運營的系統(tǒng),當然會做一些處理。
.net mvc為我們提供的實例項目,是這樣使用throw關(guān)鍵字的,看代碼:
public bool ValidateUser(string userName, string password)
{
if (String.IsNullOrEmpty(userName)) throw new ArgumentException("值不能為 null 或為空。", "userName");
if (String.IsNullOrEmpty(password)) throw new ArgumentException("值不能為 null 或為空。", "password");
return _provider.ValidateUser(userName, password);
}
好了,對于throw的解說就到這里,今天做項目正好用到這個,所以就總結(jié)了一下,希望給你會帶來一點點幫助,呵呵。
相關(guān)文章
asp.net使用母版頁中使用ajax腳本取數(shù)據(jù)
因母版頁繼承自UserControl,我們無法像正常頁面那樣使用Jquey或Ajax的PageMethods等無刷新方法取數(shù)據(jù)。不過可以使用ajax提供的Sys.Net.WebRequest來解決這一問題。2010-09-09ASP.NET頁面間數(shù)據(jù)傳遞的幾種方法介紹
在ASP.NET中,頁面間數(shù)據(jù)傳遞的方法有很多。下面為大家總結(jié)一下,頁面間數(shù)據(jù)傳遞的方法,來看作者的分析。2013-05-05asp.net實現(xiàn)導(dǎo)出DataTable數(shù)據(jù)到Word或者Excel的方法
這篇文章主要介紹了asp.net實現(xiàn)導(dǎo)出DataTable數(shù)據(jù)到Word或者Excel的方法,涉及asp.net操作office文件的相關(guān)技巧,需要的朋友可以參考下2016-08-08.NET C#創(chuàng)建WebService服務(wù)簡單實例
這篇文章主要為大家詳細介紹了.NET C# 創(chuàng)建WebService服務(wù)簡單實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05ASP.NET框架中的數(shù)據(jù)綁定概要與數(shù)據(jù)綁定表達式的使用
數(shù)據(jù)綁定是ASP.NET中操作數(shù)據(jù)的基礎(chǔ)方式,這里我們暫時拋開.NET提供的控件,來從基礎(chǔ)上講解ASP.NET框架中的數(shù)據(jù)綁定概要與數(shù)據(jù)綁定表達式的使用:2016-06-06