把最近聽(tīng)的寫(xiě)的一些題目做下筆記!
1.下列程序的執(zhí)行,說(shuō)法錯(cuò)誤的是 ( abc )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class multicatch { public static void main(string args[]){ try { int a=args.length; int b= 42 /a; //10行 int c[]={ 1 }; c[ 42 ]= 99 ; system.out.println( "b=" +b); } catch (arithmeticexception e){ system.out.println( "除0異常:" +e); // 15行 } catch (arrayindexoutofboundsexception e) { system.out.println( "數(shù)組超越邊界異常:" +e); // 19行 } } } |
a、程序?qū)⑤敵龅?5行的異常信息
b、程序第10行出錯(cuò)
c、程序?qū)⑤敵?rdquo;b=42”
d、程序?qū)⑤敵龅?5或者19行的異常信息
筆記:首先分析a選項(xiàng),它說(shuō)第15行將會(huì)輸出異常信息,那我們先看下整個(gè)程序,int a =args.length 這一句是獲取args數(shù)組的長(zhǎng)度,這個(gè)地方也許很多人都不清楚,都認(rèn)為這里就是空的,也就是長(zhǎng)度為0,那么肯定會(huì)拋出異常的,但是其實(shí)這個(gè)main中的這個(gè)數(shù)組是可以賦值的(這里大家可以百度一下),這個(gè)賦值是很特殊的,所以a不對(duì),不一定會(huì)拋出異常。
同樣b也是一樣的道理。
我們看c、程序?qū)⑤敵?rdquo;b=42”。很顯然如果args數(shù)組真為0,那么他會(huì)跳過(guò)system.out.println(“b=”+b);直接進(jìn)入catch語(yǔ)句拋出異常,所以不一定會(huì)輸出42。
看d、程序?qū)⑤敵龅?5或者19行的異常信息,很顯然數(shù)組越界是百分之百會(huì)報(bào)錯(cuò)的,但是不一定會(huì)有除0異常,所以d對(duì)。
2. 此方法返回值是多少(b )
1
2
3
4
5
6
7
8
9
10
11
12
|
public static int divide(){ int i = 3 ; try { int a = 10 / 0 ; return i; } catch (exception e) { i = 4 ; return i; } finally { i = 5 ; } } |
a.3
b.4
c.5
d.報(bào)異常錯(cuò)誤
分析:這個(gè)題確實(shí)有點(diǎn)坑,但是return掌握完全 就沒(méi)問(wèn)題了,相信大部分人選c,但實(shí)際答案確實(shí)b。我們先一步一步分析,首先try中的肯定會(huì)拋出異常,于是到了int a =10\0 的時(shí)候就直接跳到了catch語(yǔ)句中,此時(shí)i被賦值為4,并且此時(shí)return 返回 i值,我們都知道finally的語(yǔ)句中是最后一定會(huì)執(zhí)行的,但是我們?cè)赾atch中把 i 給返回了,其他的任何賦值都沒(méi)用!!!
所以選b。
3。對(duì)于catch子句的排列,下列哪種是正確的( b )
a、父類在先,子類在后
b、子類在先,父類在后
c、有繼承關(guān)系的異常不能在同一個(gè)try程序段內(nèi)
d、先有子類,其他如何排列都無(wú)關(guān)
分析:我舉兩個(gè)
像底下這種,是可以的
1
2
3
4
5
6
7
8
9
10
11
|
public class multicatch { public static void main(string args[]){ try { 。。。。此處省略 } catch (arithmeticexception e){ //子類異常 system.out.println( "除0異常:" +e); } catch (exception e) { system.out.println( "異常:" +e); //父類異常 } } } |
像底下這種就不行,回報(bào)錯(cuò),因?yàn)閑xception是很大的一個(gè)類,基本所有異常都繼承于它,有了它就可以處理所有的異常,所以導(dǎo)致后面寫(xiě)的就沒(méi)有意義,所以是錯(cuò)的
1
2
3
4
5
6
7
8
9
10
11
|
public class multicatch { public static void main(string args[]){ try { 。。。。此處省略 } catch (exception e){ //父類異常 system.out.println( "異常:" +e); } catch (arithmeticexception e) { system.out.println( "除0異常:" +e); //子類異常 } } } |
好吧,今天就寫(xiě)這么多,以后會(huì)繼續(xù)給大家分享我做的一些題目
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)服務(wù)器之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
原文鏈接:https://blog.csdn.net/qq_36547531/article/details/81659929