Java 异常处理 try catch finally throws throw 的使用和解读(一)
最近的一個(gè)內(nèi)部表決系統(tǒng)開發(fā)過程中,
發(fā)現(xiàn)對(duì)異常處理還存在一些模棱兩可的地方,
所以想著整理一下
主要涉及到:
1.try catch finally throws throw 的使用和解讀
2.自定義異常的使用
3.常見的運(yùn)行異常
/**
* Java 異常處理
* try catch finally throws throw
* @author Ma San
*
*/
public class ExceptionTest {
// 函數(shù)可能發(fā)生異常時(shí) 兩種處理辦法
// 1.try catch 捕獲并處理異常
// 2.throws 聲明異常
/**
* try catch 捕獲并處理異常
*/
public void function1(int index){
try {
// 以下代碼拋出異常,并且被捕獲
if(--index<0) throw new Exception("index out of 0");
} catch (Exception e) {
// catch 內(nèi)處理異常
// TODO: handle exception
}
}
/**
* throws 聲明異常
* @throws Exception
*/
public void function2(int index) throws Exception{
// 以下代碼拋出異常
if(--index<0) throw new Exception("index out of 0");
}
// 比較 try catch 和 throws 的區(qū)別
// 前者會(huì)捕獲異常并處理,后者只是聲明會(huì)發(fā)生的異常,并不能捕獲也不能處理
// throws聲明異常,如果被拋出,最終也會(huì)被try catch 捕捉處理
// 如果程序中沒有try catch 那么 該線程被終止,如果是主線程則程序會(huì)被終止
// try catch finally throws throw 語法規(guī)則和比較
// 1.try catch :捕獲異常
// 2.finally : 任何情況下都會(huì)執(zhí)行的代碼
// 3.throws: 聲明可能會(huì)發(fā)生的異常
// 4.throw: 拋出異常
//語法規(guī)則:
//(1):try代碼塊不能單獨(dú)存在,后邊至少有一個(gè)catch或者finally代碼塊
// 以下代碼會(huì)發(fā)生編譯錯(cuò)誤
public static void main(String args[]) throws Exception{
try{
//代碼
}
}
//(2):try代碼快后邊可以沒有catch也可以有多個(gè)catch,可以沒有finally也可以有一個(gè)finally
// 其中,如果catch 和 finally要共存,則finally 必須出現(xiàn)在catch的后面
// (3): try 代碼塊和catch、finally代碼塊是不同的作用域
// 在try代碼塊聲明的變量 catch 和 finally不能訪問
try
{
// 在try代碼塊中聲明變量
int num = 0;
}
catch (Exception e)
{
num++; // 不合法,編譯錯(cuò)誤
}finally{
num = 9; // 不合法,編譯錯(cuò)誤
}
// 定義在try代碼塊外
int num = 0;
try
{
}
catch (Exception e)
{
num++; // 合法
}finally{
num = 9; // 合法
}
?
(4): try 后面包含多個(gè)catch的時(shí)候,JVM會(huì)一次和各個(gè)catch代碼塊聲明的異常類型匹配
如果異常對(duì)象為某個(gè)異常類型或者其子類實(shí)例就執(zhí)行這個(gè)catch代碼塊,不再執(zhí)行其他的。
例:
try
{
code;//假設(shè)可能拋出FileNotFoundException
}
catch (SQLException)
{
System.out.println("SQLException");
}
catch (IOException)
{
System.out.println("IOException");
}
catch (Exception)
{
System.out.println("Exception");
}
發(fā)生異常控制臺(tái)會(huì)輸出 “Exception”;
(5)throw 語句后面不允許緊跟其他語句,因?yàn)檫@些語句永遠(yuǎn)不會(huì)被執(zhí)行
}
轉(zhuǎn)載于:https://www.cnblogs.com/maxm/p/6632264.html
總結(jié)
以上是生活随笔為你收集整理的Java 异常处理 try catch finally throws throw 的使用和解读(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅谈Windows下SVN在Androi
- 下一篇: Java多线程:线程间通信之volati