導航:首頁 > 編程語言 > java多個catch

java多個catch

發布時間:2022-06-12 02:25:32

java catch多個異常

//例子一
import java.util.Random;

public class Test
{
public static void main(String[] args)
{
final Random r=new Random();
final Exception[] exs=
{
new Exception1(),
new Exception2(),
new Exception("Exception")
};

for(int i=0;i<5;i++)
{
try
{
throw exs[r.nextInt(exs.length)];
}
catch(Exception1 ex)
{
System.out.println(ex);
}
catch(Exception2 ex)
{
System.out.println(ex);
}
catch(Exception ex)
{
System.out.println(ex);
}
}
}
}

class Exception1 extends Exception
{
@Override
public String toString()
{
return "Exception1";
}
}

class Exception2 extends Exception
{
@Override
public String toString()
{
return "Exception2";
}
}

//例子二(需較新的java版本才能支持)
import java.util.Random;

public class Test
{
public static void main(String[] args)
{
final Random r=new Random();
final Exception[] exs=
{
new Exception1(),
new Exception3(),
new Exception2(),
new Exception("Exception")
};

for(int i=0;i<5;i++)
{
try
{
throw exs[r.nextInt(exs.length)];
}
catch(Exception3|Exception1|Exception2 ex)
{
System.out.println(ex);
}
catch(Exception ex)
{
System.out.println(ex);
}
}
}
}

class Exception1 extends Exception
{
@Override
public String toString()
{
return "Exception1";
}
}

class Exception2 extends Exception
{
@Override
public String toString()
{
return "Exception2";
}
}

class Exception3 extends Exception
{
@Override
public String toString()
{
return "Exception3";
}
}

② java中try 與catch的使用

try{

//代碼區
}catch(Exception e){
//異常處理
}

try語句:
try語句用大括弧{}指定了一段代碼,該段代碼可能會拋棄一個或多個例外。
catch語句:
catch語句的參數類似於方法的聲明,包括一個例外類型和一個例外對象。例外類型必須為Throwable類的子類,它指明了catch語句所處理的例外類型,例外對象則由運行時系統在try所指定的代碼塊中生成並被捕獲,大括弧中包含對象的處理,其中可以調用對象的方法。
catch語句可以有多個,分別處理不同類的例外。Java運行時系統從上到下分別對每個catch語句處理的例外類型進行檢測,直到找到類型相匹配的catch語句為止。這里,類型匹配指catch所處理的例外類型與生成的例外對象的類型完全一致或者是它的父類,因此,catch語句的排列順序應該是從特殊到一般。
也可以用一個catch語句處理多個例外類型,這時它的例外類型參數應該是這多個例外類型的父類,程序設計中要根據具體的情況來選擇catch語句的例外處理類型。

③ Java 寫try...catch語句 寫多個不同類型的異常捕捉好還是只寫一個Exception好

看你異常之後要做什麼處理了。如果不同的異常你又不同的處理邏輯,那就分開寫。如果處理邏輯一樣,那寫一個就行了。

④ JAVA中,多個catch真的是最理想的方式嗎(暫時不談throws)

1,整個代碼中要求不能出現任何錯誤,並且沒有用戶交互數據,如果出了異常,這種情況通常都是要修改代碼才能解決的,這種直接 拋出去,不需要try
2,代碼中有用戶交互,並且用戶數據的數據要有格式限制,如何輸入的數據有錯誤,就會出異常,這種情況是數據格式不對,代碼沒有錯誤,這種就要用try語句,並且按異常類型進行信息反饋給用戶,讓用戶知道什麼錯,然後進行修改。

catch是不是要很多類型,主要看這個信息誰看,如果是反饋給用戶,每種catch的異常類型的信息肯定不同,並且還要進行說明,
有些異常出了錯,還要對出錯語句以前的某些操作的信息進行操作,而有些又不需要,這種就要 分別catch

⑤ java中什麼叫多重捕獲MultiCatch,它的用法是怎樣的

multicatch就是捕獲多個異常,其原因就是被監控的語句可能發生多重異常,例子如下
try{
----------
} catch (IOException e) {
} catch (NullPointerException e) {
}

⑥ 一個.java文件里有多個異常,用try-catch處理要怎麼處理啊

所有可能錯的程序段放在一個try里,接著多個catch依次抓取異常就可以了,注意抓取時先catch子異常再父異常(有包含關系時)

⑦ java為什麼會發生catch異常

Java代碼
import java.io.IOException;
public class ExceptionTryCatchTest {
public void doSomething() throws IOException{
System.out.println("do somthing");
}
public static void main(String[] args){
ExceptionTryCatchTest et = new ExceptionTryCatchTest();
try {
et.doSomething();
} catch (Exception e) {
//
} catch (IOException e) {
//
}
}
}
問題:上述程序能否編譯通過?為什麼?

解答:不能編譯通過。因為編譯的時候會報錯:已捕捉到異常 java.io.IOException。 catch(IOException e)這句有錯誤。
分析:對於try..catch捕獲異常的形式來說,對於異常的捕獲,可以有多個catch。對於try裡面發生的異常,他會根據發生的異常和catch裡面的進行匹配(怎麼匹配,按照catch塊從上往下匹配),當它匹配某一個catch塊的時候,他就直接進入到這個catch塊裡面去了,後面在再有catch塊的話,它不做任何處理,直接跳過去,全部忽略掉。如果有finally的話進入到finally裡面繼續執行。換句話說,如果有匹配的catch,它就會忽略掉這個catch後面所有的catch。對我們這個方法來說,拋出的是IOException,當執行etct.doSomething();時,可能會拋出IOException,一但拋出IOException,它首先進入到catch (Exception e) {}裡面,先和Exception匹配,由於OExceptionextends Exception,根據多態的原則,IOException是匹配Exception的,所以程序就會進入到catch (Exception e) {}裡面,進入到第一個catch後,後面的catch都不會執行了,所以catch (IOException e) {}永遠都執行不到,就給我們報出了前面的錯誤:已捕捉到異常 java.io.IOException。

總結:在寫異常處理的時候,一定要把異常范圍小的放在前面,范圍大的放在後面,Exception這個異常的根類一定要剛在最後一個catch裡面,如果放在前面或者中間,任何異常都會和Exception匹配的,就會報已捕獲到...異常的錯誤。

⑧ Java 中try catch語句 Catch( )這個括弧裡面該怎麼寫,有幾種情況 求大神解釋

catch
就是處理各種異常。
簡單的可以直接一個Exception任何異常出現在try中就會執行這里。
或者分成多個catch,
處理各種異常
但是要注意
底層exception在前,高級的在後,否則無法通過編譯

⑨ java中try和catch的具體作用

try就像一個網,把try{}裡面的代碼所拋出的異常都網住,然後把異常交給catch{}裡面的代碼去處理,最後執行finally之中的代碼。

無論try中代碼有沒有異常,也無論catch是否將異常捕獲到,finally中的代碼都一定會被執行。

例如:當除數為0時,編譯不會報錯,如果沒有try/catch的話,程序直接崩潰。用try/catch的話,則可以讓程序運行下去,並且輸出為什麼出錯。



(9)java多個catch擴展閱讀

java中try....catch的使用原則

1、當代碼中可能會遇到的異常需要用try{ }catch{Exception e}來處理,否則導致程序崩潰。

2、不要在for循環裡面嵌套try catch子句。

3、盡可能的減少try catch子句的嵌套,會影響性能。

4、同一個try子句中多個catch時,異常處理原則。

當一個try塊中包含眾多語句,可能拋出多種不同的異常,只有通過多個catch塊來捕獲不同的異常。而如果兩個異常存在繼承關系,應該把子類異常放在父類異常的前面來捕獲,或者把最小范圍異常放在最前面 ,范圍大的放在後面。

因為是按照catch塊從上往下匹配,當它匹配某一個catch塊的時候,就直接進入到這個catch塊裡面去了,後面在再有catch塊的話,它不做任何處理,直接跳過去,全部忽略掉。

如果有finally的話進入到finally裡面繼續執行。Exception這個異常的根類一定要剛在最後一個catch裡面,如果放在前面或者中間,任何異常都會和Exception匹配的,就會報已捕獲到異常的錯誤。

⑩ java中 在一個異常處理中什麼語句塊是可多個的

異常處理一般格式:
捕獲異常:
try{
//代碼塊
}catch(異常類型,例如:Exception e){
//需要拋出的異常,例如:e.printStackTrace();
}catch(異常類型){
//需要拋出的異常
}finally{
//必定執行的代碼塊
}
所以說在一個異常處理中catch語句塊是可以多個的,也就是可以拋出多個異常!

閱讀全文

與java多個catch相關的資料

熱點內容
氣動隔膜式壓縮機 瀏覽:470
linux如何修改主機名 瀏覽:104
單片機游標上下移動 瀏覽:526
數據加密驗證 瀏覽:108
程序員被激怒 瀏覽:891
winxp找不到伺服器dns地址 瀏覽:842
以文本文件的格式保存考生文件夾 瀏覽:41
編譯原理文法分為幾類 瀏覽:570
JAVA基礎學python要多久 瀏覽:74
java流量控制 瀏覽:936
java實現多重繼承 瀏覽:707
票據通加密狗怎麼在新系統上使用 瀏覽:795
航模加密狗連接電腦 瀏覽:473
好用的匯編語言編譯器 瀏覽:863
自己編譯安卓虛擬機 瀏覽:913
中國的古代演算法 瀏覽:656
上層怎麼看程序員 瀏覽:27
程序員便當排骨 瀏覽:855
如何禁用安卓全家桶 瀏覽:261
oa伺服器異常怎麼辦 瀏覽:73