顧名思義,通俗來說異常就是指,那些產生在我們本來斟酌和設定的計劃以外的意外情況。
生活中總是會存在各種突發情況,如果沒有做好準備,就讓人措手不及。
你和朋友約好了明天1起去登山,半道上忽然烏云蔽日,下起了磅礴大雨。這就是所謂的異常情況。
你1下子傻眼了,然后看見朋友淡定的從背包里取出1件雨衣穿上,淫笑著看著你。這就是對異常的處理。
對1個OO程序猿來說,所做的工作就是:將需要處理的現實生活中的復雜問題,抽象出來編寫成為程序。
既然現實生活中總是存在著各種突然的異常情況,那末對應其抽象出的代碼,自然也是存在這樣的風險的。
所以常常說:要編寫1個完善的程序其實不只是簡簡單單的把功能實現,還要讓程序具有處理在運行中可能出現的各種意外情況的能力。
這就是所謂的異常的使用。
這就是Java當中異常體系的結構構成,從圖中我們可以提取到的信息就是:
1、Java中定義的所有異常類都是內置類Throwable的子類。
2、Java中的異常通常被分為兩大類:Error和Exception:
3、Exception最多見的兩種異常類型分別是:
要理解Java中的異常使用,首先要明白幾個關于異常處理的工具 - 異常處理關鍵字的使用。
1、throw:用以在方法內部拋出指定類型的異常。
2、throws:用以聲明 1個方法可能產生的異常(通常都是編譯時檢測異常)有哪些。
用try語句塊包括可能產生異常的代碼,catch用于捕獲產生的異常,并在catch語句塊中定義對捕獲到的異常的處理方式。
特點是被try語句塊包括的內容中,是不是真的產生了異常。程序終究都將履行finally語句塊當中的內容。
通經常使用于對資源的釋放操作,例如:通過JDBC連接數據庫等情況。
了解Java中異常類的實際利用之前,應當先了解兩個概念,用以對最經常使用的異常做1個分類:
1、編譯時被檢測異常:
只要是Exception和其子類都是,除特殊子類RuntimeException體系。
所謂的編譯時被檢測異常也就是指在程序的編譯器就會進行檢測的異常分類。
也就是說,如果1個方法拋出了1個編譯時檢測異常,Java則要求我們必須進行處理。
既:通過throws對異常進行聲明處理 或是 通過try-catch對異常進行捕獲處理。
如果程序編譯時檢測到該類異常沒有被進行任何處理,那末編譯器則會報出1個編譯毛病。
上面代碼中的ClassNotFoundException就是1種編譯時檢測異常,這個異常是由Class類當中的forName方法所拋出并聲明的。
如果我們在使用該方法時沒有對異常進行處理:聲明或捕獲,那末該程序就會編譯失敗。
通過這個例子想要說明的是:編譯時被檢測異常通常都是指那些“可以被我們預感”的異常情況。
正例如:我們通過Class.forName是想要獲得指定類的字節碼文件對象,所以我們自然也能夠預感可能會存在:
與我們傳入的類名參數所對應的類字節碼文件對象不存在,查找不到的情況。
既然這類意外情況是可以被預感的,那自然就應當針對其制定1些應對方案。
項目建設完成以后的結構:
前面介紹了Shell腳本的基礎和運算符等,今天再來看1下關于Shell腳本的輸入與輸出。
echo
項目建設完成以后的結構:
cat
項目建設完成以后的結構:
tee
項目建設完成以后的結構:
Shell輸入與輸出的1些概念:
項目建設完成以后的結構:
標準輸入、輸出和毛病
項目建設完成以后的結構:
使用文件描寫符
項目建設完成以后的結構:
輸入輸出命令的用法:
該命令的作用是可以顯示文本行或變量,或把字條串輸入到文件.
項目建設完成以后的結構:
echo [option] string
項目建設完成以后的結構:
?。?-n 回車不換行,linux系統默許回車換行
項目建設完成以后的結構:
例子:
項目建設完成以后的結構:
#!/bin/bash #echotest echo -e "we aref testing echo command " echo -n "we are testing echo command" echo "OK" echo echo "we are testing echo command " echo "output this string to file">echo_output.txt 項目建設完成以后的結構:
jesson@jesson-HP:~/develop/workspace/shell_workspace$ chmod a+rx echotest.sh jesson@jesson-HP:~/develop/workspace/shell_workspace$ ./echotest.sh we are testing echo command we are testing echo commandOK we are testing echo command 項目建設完成以后的結構:
2. read
項目建設完成以后的結構:
用法:
項目建設完成以后的結構:
- 如果只指定1個變量,那末read將會把所有的輸入賦給該變量,直至遇到第1個文件結束符或回車;如果給出了多個變量,它們按順序分別被賦予不同的變量。shell將用空格作為變量之間的分隔符。
項目建設完成以后的結構:
readtest.sh
給予權限,履行腳本:
3. cat
項目建設完成以后的結構:
用法:
項目建設完成以后的結構:
例子:
注意,cat命令是將輸入的所有內容顯示出來,如果需要分頁顯示,則可借助于管道|和more或less命令來實現。
可以通過管道把1個命令的輸出傳遞給另外一個命令作為輸入。
項目建設完成以后的結構:
格式:command1 | command2
項目建設完成以后的結構:
jesson@jesson-HP:~/develop/workspace/shell_workspace$ ls -l 總用量 32 -rw-rw-r-- 1 jesson jesson 25 1月 22 20:16 cattest.sh -rw-rw-r-- 1 jesson jesson 27 1月 22 19:50 echo_output.txt -rwxrwxr-x 1 jesson jesson 209 1月 22 19:50 echotest.sh -rwxrw-r-- 1 jesson jesson 94 1月 15 21:20 helloworld.sh -rwxrw-r-- 1 jesson jesson 637 1月 17 17:07 parm.sh -rwxrwxr-x 1 jesson jesson 299 1月 22 20:10 readtest.sh -rwxr-xr-x 1 jesson jesson 47 1月 17 15:21 searchfile.sh -rw-rw-r-- 1 jesson jesson 141 1月 22 20:18 shelltest.bak jesson@jesson-HP:~/develop/workspace/shell_workspace$ ls -l | grep parm.sh -rwxrw-r-- 1 jesson jesson 637 1月 17 17:07 parm.sh jesson@jesson-HP:~/develop/workspace/shell_workspace$ df -k df: "/root/.gvfs": 權限不夠 文件系統 1K-塊 已用 可用 已用% 掛載點 /dev/sda9 29525076 12915484 15109792 47% / udev 2031604 4 2031600 1% /dev tmpfs 816612 860 815752 1% /run none 5120 0 5120 0% /run/lock none 2041528 792 2040736 1% /run/shm /dev/sda10 49135432 28230216 18409268 61% /home /dev/sda1 73400952 43260784 30140168 59% /media/00006A15000514EC /dev/sda5 138424040 123913684 14510356 90% /media/00010A370001FCE2 /dev/sda6 56504040 44425044 12078996 79% /media/000E2D72000188C0 /dev/sda7 138134868 32924076 105210792 24% /media/0008EEFF00004113 jesson@jesson-HP:~/develop/workspace/shell_workspace$ df -k | awk '{print $1}' df: "/root/.gvfs": 權限不夠 文件系統 /dev/sda9 udev tmpfs none none /dev/sda10 /dev/sda1 /dev/sda5 /dev/sda6 /dev/sda7 jesson@jesson-HP:~/develop/workspace/shell_workspace$ df -k | awk '{print $1}' | grep -v "文件系統" df: "/root/.gvfs": 權限不夠 /dev/sda9 udev tmpfs none none /dev/sda10 /dev/sda1 /dev/sda5 /dev/sda6 /dev/sda7 jesson@jesson-HP:~/develop/workspace/shell_workspace$ df -k | awk '{print $1}' | grep -v "文件系統"|grep dev df: "/root/.gvfs": 權限不夠 /dev/sda9 udev /dev/sda10 /dev/sda1 /dev/sda5 /dev/sda6 /dev/sda7
5. tee
項目建設完成以后的結構:
用法:
項目建設完成以后的結構:
- 如果希望在看到輸出的同時,也將其存入1個文件,那末,這個命令就最適合,-a,表示追加的意思。
項目建設完成以后的結構:
例子:
5. exec
項目建設完成以后的結構:
用法:
項目建設完成以后的結構:
?。渲械腸ommand通常是1個shell腳本。
項目建設完成以后的結構:
輸入輸出的基本概念:
在shell中履行命令時,每一個進程都和3個打開的文件相聯系,并使用文件描寫符來援用這些文件,由于文件描寫符不容易記,shell同時也給出了相應的文件名。
項目建設完成以后的結構:
|
項目建設完成以后的結構:
|
項目建設完成以后的結構:
|
項目建設完成以后的結構: 上一篇 java環境變量的配置 下一篇 JS操作JSON總結 |