成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

java代碼阻斷 java阻止

java項(xiàng)目中運(yùn)行錯(cuò)誤

Java異常概念

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),菏澤企業(yè)網(wǎng)站建設(shè),菏澤品牌網(wǎng)站建設(shè),網(wǎng)站定制,菏澤網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,菏澤網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

1)Java異常是Java提供的用于處理程序錯(cuò)誤的一種機(jī)制.

2)所謂錯(cuò)誤時(shí)指在程序運(yùn)行中發(fā)生的一些異常事件(如:除0溢出,數(shù)組下標(biāo)越界,所要讀取的文件不存在)

3)設(shè)計(jì)良好的程序應(yīng)該在異常發(fā)生時(shí)提供處理這些錯(cuò)誤的方法,使得程序不會(huì)因?yàn)楫惓5陌l(fā)生而阻斷或產(chǎn)生不可預(yù)見(jiàn)的結(jié)果

4)Java程序的執(zhí)行過(guò)程中如果出現(xiàn)異常事件,可以生成一個(gè)異常類(lèi)對(duì)象,該異常對(duì)象封裝了異常事件信息并將被提交給Java運(yùn)行時(shí)系統(tǒng),這個(gè)過(guò)程被稱為拋出(throw)異常

5)當(dāng)Java運(yùn)行時(shí)系統(tǒng)接收到異常對(duì)象時(shí),會(huì)尋找能處理這一異常的代碼并把當(dāng)前異常對(duì)象交給其處理,這一過(guò)程稱為捕獲(catch)異常

Java異常的分類(lèi)

J2SDK?中定義了很多異常類(lèi),這些類(lèi)對(duì)映了各種各樣可能出現(xiàn)的異常事件

1)Error:稱為錯(cuò)誤,由Java虛擬機(jī)生成并拋出,包括動(dòng)態(tài)連接失敗、虛擬機(jī)錯(cuò)誤等,程序?qū)ζ洳蛔魈幚怼?/p>

2)Exception:所有異常的父類(lèi),其子類(lèi)對(duì)應(yīng)了各種各樣可能出現(xiàn)的異常事件,一般需要用戶顯示的聲明或捕獲

3)Runtime?Exception:一類(lèi)特殊的異常,如被0除、數(shù)組下標(biāo)超出范圍等,其產(chǎn)生比較頻繁,處理麻煩,如果現(xiàn)實(shí)的聲明或捕獲將會(huì)對(duì)程序可讀性和運(yùn)行效率影響很大。因此有系統(tǒng)自動(dòng)檢測(cè)并將它們交給缺省的異常處理程序(用戶不必對(duì)其處理)

異常的捕獲和處理

1)try代碼段包含可能產(chǎn)生異常的代碼

2)try代碼段后跟有一個(gè)或多個(gè)catch代碼段

3)每個(gè)catch代碼段聲明其能處理的異常特定類(lèi)型的異常并提供處理的方法

4)當(dāng)異常發(fā)生時(shí),程序會(huì)終止當(dāng)前的流程,根據(jù)獲取異常的類(lèi)去執(zhí)行相應(yīng)的catch代碼

5)finally段的代碼無(wú)論是否發(fā)生異常都會(huì)執(zhí)行

使用自定義的異常

1)?通過(guò)幾成java.lang.Exception類(lèi)聲明自己的異常

2)?在方法適當(dāng)?shù)奈恢米詣?dòng)生成自定義異常的實(shí)力,并用throw語(yǔ)句拋出

3)?在方法的聲明部分用throws語(yǔ)句聲明該方法可能拋出的異常

重寫(xiě)方法需要拋出與原方法所拋出異常類(lèi)型一致異常或不拋出異常

java通過(guò)串口接收數(shù)據(jù),不正常。求大神指導(dǎo)

不要使用inputStream.available(),如果我沒(méi)有記錯(cuò)的話,available返回的是沒(méi)有被阻斷的字節(jié)數(shù)(已經(jīng)被緩沖的內(nèi)容),可以嘗試read(byte b[])方法,然后通過(guò)返回值是否-1來(lái)判斷,如下。

int?bytesRead?=?inputStream.read(readBuffer);

while?(bytesRead?!=?-1)?{

readStr?+=?new?String(readBuffer).trim();

bytesRead?=?inputStream.read(readBuffer);

}

java代碼中,System.exit(1); 有什么作用?不是拋出異常之后就不會(huì)往下執(zhí)行了嗎?

System (Java 2 Platform SE 5.0)

exit

public static void exit(int status)終止當(dāng)前正在運(yùn)行的 Java 虛擬機(jī)。參數(shù)用作狀態(tài)碼;根據(jù)慣例,非零的狀態(tài)碼表示異常終止。

該方法調(diào)用 Runtime 類(lèi)中的 exit 方法。該方法永遠(yuǎn)不會(huì)正常返回。

調(diào)用 System.exit(n) 實(shí)際上等效于調(diào)用:

Runtime.getRuntime().exit(n)

參數(shù):

status - 退出狀態(tài)。

拋出:

SecurityException - 如果安全管理器存在并且其 checkExit 方法不允許以指定狀態(tài)退出。

而且還有:

Runtime (Java 2 Platform SE 5.0)public void exit(int status)通過(guò)啟動(dòng)虛擬機(jī)的關(guān)閉序列,終止當(dāng)前正在運(yùn)行的 Java 虛擬機(jī)。此方法從不正常返回。可以將變量作為一個(gè)狀態(tài)碼;根據(jù)慣例,非零的狀態(tài)碼表示非正常終止。

虛擬機(jī)的關(guān)閉序列包含兩個(gè)階段。在第一個(gè)階段中,會(huì)以某種未指定的順序啟動(dòng)所有已注冊(cè)的關(guān)閉掛鉤(如果有的話),并且允許它們同時(shí)運(yùn)行直至結(jié)束。在第二個(gè)階段中,如果已啟用退出終結(jié),則運(yùn)行所有未調(diào)用的終結(jié)方法。一旦完成這個(gè)階段,虛擬機(jī)就會(huì)暫停。

如果在虛擬機(jī)已開(kāi)始其關(guān)閉序列后才調(diào)用此方法,那么若正在運(yùn)行關(guān)閉掛鉤,則將無(wú)限期地阻斷此方法。如果已經(jīng)運(yùn)行完關(guān)閉掛鉤,并且已啟用退出終結(jié) (on-exit finalization),那么此方法將利用給定的狀態(tài)碼(如果狀態(tài)碼是非零值)暫停虛擬機(jī);否則將無(wú)限期地阻斷虛擬機(jī)。

System.exit 方法是調(diào)用此方法的一種傳統(tǒng)而便捷的方式。

參數(shù):

status - 終止?fàn)顟B(tài)。按照慣例,非零的狀態(tài)碼表明非正常終止。

拋出:

SecurityException - 如果安全管理器存在,并且其 checkExit 方法不允許存在指定的狀態(tài)

所以總結(jié)起來(lái):System.exit(n)中的n可以是0、1、2、3等等不同的數(shù)值,但最終非零的狀態(tài)碼表示異常終止,只有是0的時(shí)候是正常退出。

下面是JDK中的代碼

public void exit(int status) {

SecurityManager security = System.getSecurityManager();

if (security != null) {

security.checkExit(status);

}

Shutdown.exit(status);

}

Shutdown中的靜態(tài)方法exit

static void exit(int status) {

boolean runMoreFinalizers = false;

synchronized (lock) {

if (status != 0) runFinalizersOnExit = false;

switch (state) {

case RUNNING: /* 0, Initiate shutdown */

state = HOOKS;

break;

case HOOKS: /* 1, Stall and halt */

break;

case FINALIZERS:

if (status != 0) {

/* Halt immediately on nonzero status */

halt(status);

} else {

/* Compatibility with old behavior:

* Run more finalizers and then halt

*/

runMoreFinalizers = runFinalizersOnExit;

}

break;

}

}

if (runMoreFinalizers) {

runAllFinalizers();

halt(status);

}

synchronized (Shutdown.class) {

/* Synchronize on the class object, causing any other thread

* that attempts to initiate shutdown to stall indefinitely

*/

sequence();

halt(status);

}

}

這個(gè)應(yīng)該是你手動(dòng)停止的,不是程序自己出的異常,程序執(zhí)行到該代碼時(shí)退出,后續(xù)代碼都不執(zhí)行

文章標(biāo)題:java代碼阻斷 java阻止
URL地址:http://jinyejixie.com/article48/dodooep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、品牌網(wǎng)站建設(shè)外貿(mào)建站、靜態(tài)網(wǎng)站、網(wǎng)站改版、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
临漳县| 四平市| 宣汉县| 贞丰县| 读书| 盐山县| 卓资县| 南通市| 化德县| 吉木乃县| 磐石市| 集贤县| 新乐市| 陆河县| 凤庆县| 舒城县| 翁源县| 西吉县| 石景山区| 兴文县| 察雅县| 玉环县| 马山县| 全州县| 金塔县| 伊宁县| 页游| 巩义市| 青州市| 巴东县| 年辖:市辖区| 长武县| 琼海市| 定远县| 哈尔滨市| 明光市| 顺平县| 泸水县| 长垣县| 平邑县| 囊谦县|