<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jinfeng_wang

    G-G-S,D-D-U!

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks

    1 .NET Framework IO Interface? and? JDK IO Interface

    1.1 .NET Framework 1.1

    ?? public StreamWriter(??? string path? );

    異常

    異常類型

    條件

    UnauthorizedAccessException

    訪問被拒絕。

    ArgumentException

    path 為空字符串 ("")

    ArgumentNullException

    path 為空引用( Visual Basic 中為 Nothing )。

    DirectoryNotFoundException

    指定的路徑無效,比如在未映射的驅(qū)動器上。

    PathTooLongException

    指定的路徑、文件名或者兩者都超出了系統(tǒng)定義的最大長度。例如,在基于 Windows 的平臺上,路徑必須小于 248 個字符,文件名必須小于 260 個字符。

    IOException

    path 包含不正確或無效的文件名、目錄名或卷標(biāo)的語法。

    SecurityException

    調(diào)用方?jīng)]有所要求的權(quán)限。

    ?

    1.2 JDK 1.4.2 :

    public FileWriter(String fileName)? throws IOException

    				Constructs a FileWriter object given a file name. 
    		

    Parameters:

    fileName - String The system-dependent filename.

    Throws:

    IOException - if the named file exists but is a directory rather than a regular file, does not exist but cannot be created, or cannot be opened for any other reason

    ?

    2 、解析

    .NET Excetpion Unchecked 異常,客戶端不要求去 Check 代碼,但是 JAVA 的絕大部分 Checked 異常,它要求客戶端的代碼檢測異常。

    假設(shè)一個這樣的場景,方法 OutMethod 調(diào)用 InnerMethod ,而內(nèi)部方法 InnerMethod 拋出的異常 InnerException

    對于 Java CheckedException ,或者 OutMethod 去拋出 InnerException ,或者 OutMethod 捕捉 InnerException (然后做處理)。

    ?

    再來觀察一下 JDK FileWriter 的異常聲明,我沒有詳細測試其在各種可能出錯情況下拋出的 IOException 的消息,但是其分類遠遠不如 .NET StreamWriter 。假設(shè) Java 想照抄 .NET StreamWriter ,對于 Java 的使用者來說,無異于惡夢。外部的代碼需要捕獲如此多的異常消息(不捕捉就會在 OutMethod 拋出一大堆的異常,問題繼續(xù)傳播下去,這是 CheckException 的一個弱點)。也許正是出于這樣的問題,所以此處 Java 接口的異常聲明比較簡單。

    那么假設(shè)我是一個庫設(shè)計者,正在用到了 IO 。如果我使用 .NET 進行開發(fā),對于 IOException 來說,我是否有必要捕捉呢?捕捉的目的是為了“處理”,那么對于庫設(shè)計者,顯然這時候需要通知其“客戶程序員”出錯的原因,所以這里的庫設(shè)計者的行為最好就是“不處理”。如果處理,那只能是“ catch 、再 throw ”。那么這樣的處理顯然是無意義的,因為原始異常已經(jīng)足以提醒客戶程序員出錯的原因了。如果捕捉,那代碼會特別的丑陋(直接 catch Exception 的行為是不可取的)。

    ?

    CheckedException 的另外一個缺點就是“將 Exceotion 加入了 Interface 的規(guī)格聲明“。假設(shè) OutMethod 調(diào)用了 InnerMethod ,此時 InnerMethod 的設(shè)計者需要增加一個異常,那么會直接影響到 OutMethod 。當(dāng)然這里的 InnerMethod 的設(shè)計者此時已經(jīng)做了“修改接口聲明“的行為。

    ?

    ?


    ???隨后待續(xù)......?

    ?

    ?

    posted on 2006-05-11 21:18 jinfeng_wang 閱讀(1873) 評論(4)  編輯  收藏 所屬分類: javaview.Net

    評論

    # re: Checked Exception VS UnChecked Excetion 2006-05-12 10:14 原創(chuàng)專欄 開源學(xué)習(xí)
    我覺得我們更應(yīng)該關(guān)注如何用好這兩類異常。

    如果你類庫開發(fā)人員。我覺得hibernate3,spring提供的異常處理方法很不錯。

    你可以把IO等異常轉(zhuǎn)化成你類庫中中定義的異常。當(dāng)然你定義的異常是Checked Exception 還是 UnChecked Excetion 那你自己定了。
      回復(fù)  更多評論
      

    # re: Checked Exception VS UnChecked Excetion 2006-05-12 19:21 ddd
    Checked exception 是java最大的敗筆  回復(fù)  更多評論
      

    # re: Checked Exception VS UnChecked Excetion 2006-05-12 19:30 thinkbase
    我感覺你比較的這個場景不能說明什么問題,這個差異其實只是文檔上的差別,要知道 JDK 的 FileWriter 是可以拋出 IOException 的子類的,只要文檔足夠詳細,Java代碼中也可以只去捕捉更明細的異常, 也可以就捕捉并重新拋出包裝過的異常(甚至是RuntimException),除非呆板地去捕獲每個異常,不然代碼怎么會丑陋呢?  回復(fù)  更多評論
      

    # re: Checked Exception VS UnChecked Excetion 2006-06-14 12:18 ...
    @ddd



    ..............  回復(fù)  更多評論
      

    主站蜘蛛池模板: 在线播放免费人成毛片乱码| 2021精品国产品免费观看 | 台湾一级毛片永久免费| 一本色道久久综合亚洲精品蜜桃冫 | 久久亚洲成a人片| 99re热免费精品视频观看| 亚洲avav天堂av在线网毛片| 亚洲精品无码久久久久sm| 日韩吃奶摸下AA片免费观看| 特级做a爰片毛片免费看| 亚洲视频在线观看免费视频| 国产一区二区三区在线观看免费| 你懂得的在线观看免费视频| 亚洲人成人无码.www石榴| 亚洲色成人WWW永久网站| 精品国产免费观看久久久| 暖暖免费在线中文日本| 美女被羞羞网站免费下载| 亚洲美女视频一区二区三区| 亚洲国产精品成人| 久久天天躁狠狠躁夜夜免费观看| jizz免费一区二区三区| 亚洲日产乱码一二三区别 | 亚洲一级毛片免费看| 国产亚洲精品看片在线观看| 无码中文在线二区免费| 久久久久久国产精品免费免费男同 | 亚洲中文无码亚洲人成影院| 亚洲av中文无码乱人伦在线r▽ | 久久嫩草影院免费看夜色| 亚洲性无码一区二区三区| 久久精品国产亚洲av麻| 亚洲av成人一区二区三区在线观看| 每天更新的免费av片在线观看| 一级看片免费视频囗交| 亚洲国产精品ⅴa在线观看| 亚洲国产精品久久久久婷婷软件| 超清首页国产亚洲丝袜| 国产高清免费观看| 成人人免费夜夜视频观看| 91九色老熟女免费资源站|