java。lang。IllegalAccessException:demo
8。9finally
當一個”異常”被丟擲時,程式的執行就不再是線性的,跳過某?copy;行,甚至會由於沒有與?reg;匹配的catch子句而過早地返回。有時確保一段程式碼不管發生什麼”異常”都被執行到是必要的,關鍵詞finally就是用來標識這樣一段程式碼的。即使你沒有catch子句,finally程式塊也會在執行try程式塊後的程式?reg;前執行。每個try語句都需要至少一個與?reg;相配的catch子句或finally子句。一個成員函式返回到呼叫它的成員函式,或者透過一個沒捕捉到的”異常”,或者透過一個明確的return語句,finally子句總是恰好在成員函式返回前執行。下面是一個例子,它有幾個成員函式,每個成員函式用不同的途徑退出,但執行了finally子句。
classFinallyDemo{staticvoidprocA(){try
{System。out。println(”insideprocA”);thrownew
RuntimeException(”demo”);}finally{System。out。println(”procA's
finally”);}}staticvoidprocB(){try{System。out。println(”inside
procB”);return;}finally{System。out。println(”procB'sfinally”);}}
publicstaticvoidmain(Stringargs''){try{procA();}catch(Exception
e);procB();}}
下面是這個例子的執行結果:
C:》javaFinallyDemoinsideprocAprocA'sfinallyinsideprocBprocB'sfinally
本章小結
1。”異常”指的是程式執行時出現的非正常情況。2。在”異常”類層次的最上層的類叫Throwable,它有兩個直接的子類:Exception和Error。3。Java的”異常”處理透過5個關鍵詞來實現:try,catch,throw,throws和finally。
第九章Java輸入輸出操作
9。1Java輸入輸出流
所有的程式語言都提?copy;與本機檔案系統互動的方式;Java也不例外。我們將看看Java是怎樣處理標準檔案輸入輸出的(包括stdin;stout;stderr)。當你在網路上開發小程式時,你必須注意直接檔案輸入輸出是不安全因素的關鍵。大多數使用者設定他們的瀏覽器,可讓你自由的訪問他們的檔案系統,但有?copy;不讓你訪問。當然,如果你開發你內部的應用程式,你也許需要直接訪問檔案。標準輸入輸出Unix的使用者,或其他基於命令列系統的使用者(如DOS),都知道標準輸入輸出的含義。標準輸入檔案是鍵盤,標準輸出檔案是你的終端螢幕。標準錯誤輸出檔案也指向螢幕,如果有必要,它也可以指向另一個檔案以便和正常輸出區分。
系統類Java透過系統類達到訪問標準輸入輸出的功能。上面提到的三個檔案在這個系統類中實現:StdinSystem。in作為InputStream類的一個例項來實現stdin,你可以使用read()和skip(longn)兩個成員函式。read()讓你從輸入中讀一個位元組,skip(longn)讓你在輸入中跳過n個位元組。
StoutSystem。out作為PrintStream來實現stdout,你可以使用print()和println()兩個成員函式。這兩個函式支援Java的任意基本型別作為引數。
StderrSystem。err同stdout一樣實現stderr。象System。out一樣,你可以訪問PrintStream成員函式。
9。2標準輸入輸出例子
這裡有一個例子,功能象Unix裡的cat或type:importjava。