欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C#教程

當(dāng)前位置:主頁 > 軟件編程 > C#教程 >

再談異常處理try catch finally

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C#教程|點擊: 次

 1. 查找系統(tǒng)中壞味道的異常處理代碼

在上篇文章雜談異常處理try-catch-finally中主要詳細(xì)介紹了C#異常處理的概念,異常設(shè)計準(zhǔn)則,基礎(chǔ)知識等方面的內(nèi)容,但對如何正確使用異常處理印象還不是特別深刻吧。在這篇中,我通過查找以前系統(tǒng)代碼中存在壞味道的異常處理代碼來分析和講解如何正確使用異常處理。

1.1. 例一

/// <summary>
/// 保存記錄
/// </summary>
/// <param name="entity">實體</param>
public virtual object Save(T entity)
{
ISession session = NHibernateUtils.GetCurrentSession();
ITransaction tx = null;
try
{
tx = session.BeginTransaction();
object id = session.Save(entity);
tx.Commit();
return id;
}
catch (HibernateException ex)
{
if (tx != null) tx.Rollback();
throw ex;
}
finally
{
NHibernateUtils.CloseSession();
}
}

上面代碼中其中

catch (HibernateException ex)
{
if (tx != null) tx.Rollback();
throw ex;
}

代碼在異常設(shè)計是不是與“如果了解特定異常在給定上下文中引發(fā)的條件,請考慮捕捉這些異常?!被颉安蹲讲⒃俅我l(fā)異常時,首選使用空引發(fā)。這是保留異常調(diào)用堆棧的最佳方式?!钡囊蟛惶喾夏兀堪裻hrow ex;改成throw;或throw new RepositoryLayerException("保存記錄發(fā)生錯誤!", ex);是不是符合上面兩條異常設(shè)計準(zhǔn)則了呢?

1.2. 例二

表示層代碼

try
{
Cursor = Cursors.WaitCursor;
IApplicationContext ctx = ContextRegistry.GetContext();
IStoreRepository storeRepository = ctx.GetObject("StoreRepository") as IStoreRepository;
StoreInfo store = Store;
store.Name = XXName.Text.Trim();
storeRepository.Save(store);
}
catch (Exception ex)
{
ShowMessageBox(ex, MessageLevel.Error);
}
finally
{
Cursor = Cursors.Arrow;
}

領(lǐng)域?qū)哟a

private string _name;
/// <summary>
/// 店鋪名稱
/// </summary>
public virtual string Name
{
set
{
if (string.IsNullOrEmpty(value))
{
throw new ArgumentNullException("value", "店鋪名稱不能為空!");
}
if (ValidationUtils.GetLength(value,CharacterType.NVarChar) > 200)
{
throw new ArgumentOutOfRangeException("value", "店鋪名稱不能大于200!");
}
_name = value;
}
get { return _name; }
}

在這里需要說明一下,其中XXName是一個文本框控件,如果XXName文本框輸入的值經(jīng)常超過200個字符,會不停的彈出錯誤消息框,這樣是不是會引起效率問題,涉及到效率問題我們會想到什么,對了就是Tester-Doer 模式,呵呵,在這里我們怎么應(yīng)用這個模式呢?其實很簡單,我們只要設(shè)置this.XXName.MaxLength = 200;是不是就解決了這個問題?

1.3. 思考總結(jié)

認(rèn)真去分析,會發(fā)現(xiàn)在系統(tǒng)中壞味道的代碼還真不少,原來在異常處理中自認(rèn)為比較正確的做法,比較優(yōu)美的做法發(fā)現(xiàn)都是存在問題的。經(jīng)過這幾天對異常處理的系統(tǒng)學(xué)習(xí)研究,對系統(tǒng)中不好做法的異常處理進(jìn)行排查,還是學(xué)到了不少知識,也發(fā)現(xiàn)自己的不足,原來很多基礎(chǔ)技術(shù)知識還可以更上一層樓。

相關(guān)閱讀:雜談try-catch-finally異常處理,非常感謝大家一直以來對我們網(wǎng)站的支持。

上一篇:C#網(wǎng)頁跳轉(zhuǎn)方法總結(jié)

欄    目:C#教程

下一篇:C#獲取遠(yuǎn)程XML文檔的方法

本文標(biāo)題:再談異常處理try catch finally

本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/6768.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有