第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在單個 catch 塊中處理所有 java.net 異常?

如何在單個 catch 塊中處理所有 java.net 異常?

HUH函數(shù) 2023-03-23 15:28:52
我正在嘗試處理作為 java.net 包一部分的異常。我瀏覽了文檔,看到了屬于該包的 12 個異常,但我找不到這些異常的父類。到目前為止,我嘗試過的是:catch(Exception e){    if(e instanceof org.openqa.selenium.WebDriverException)        sendException("Problem is with the selenium web driver");    else if(e instanceof java.net.Exception) //I need help with this line        sendException("There is some problem with the network");}嘗試此操作后,我收到以下錯誤消息無法解析類 java.net.Exception如何捕獲 java.net 異常?
查看完整描述

4 回答

?
翻過高山走不出你

TA貢獻1875條經(jīng)驗 獲得超3個贊

java.net.Exception不存在,您不能以這種方式從特定包中捕獲類的異常。

考慮到網(wǎng)絡(luò)異??偸菑拈_始java.net也是錯誤的。

一些網(wǎng)絡(luò)異常不是由異常開始的java.net,異常也可以被另一個異常包裹。例如java.net.SocketException可以由java.lang.IllegalStateException.

你不會處理它,因為那不是java.net例外。


使用 looks處理異常instanceOf也無濟于事。

在子句中指定一個特定的例外catch就足夠了。

另請注意,異常是不言自明的,并且應(yīng)該在其狀態(tài)中包含所有相關(guān)信息:您不需要像您那樣將異常映射到文本消息。


您要發(fā)送/記錄的內(nèi)容是利用與之關(guān)聯(lián)的異常類/消息/原因/stracktrace。您所做的只是解釋容易出錯的異常含義。


這樣做:


catch(Exception e){

    sendException(e); 

}


public void sendException(Exception e){

   // exploit e.getClass(), e.getMessage() or e.getStackTrace()

   ...

}

請注意,在某些情況下,您希望捕獲一些特定的異常,因為您對它們有特定的處理:


catch(WebDriverException e){

     processWebDriverException(e);

}

catch(Exception e){

     processAnyOtherException(e);

}


查看完整回答
反對 回復(fù) 2023-03-23
?
www說

TA貢獻1775條經(jīng)驗 獲得超8個贊

首先,你抓不到的原因java.net.Exception。該Exception課程在 中java.lang,這不是您應(yīng)該捕捉的異常。


那你應(yīng)該抓什么呢?


不幸的是,沒有適合所有網(wǎng)絡(luò)異常的超類型,也沒有非網(wǎng)絡(luò)異常。但事實證明,大多數(shù)網(wǎng)絡(luò)異常都有java.io.IOException一個祖先。


(有一個java.net.*異常不是源自IOException; 即java.net.URISyntaxException。但這是一個未經(jīng)檢查的異常,并不表示存在“網(wǎng)絡(luò)問題”。)


所以一種方法是捕捉IOException. 您可以通過使用反射來獲取異常類的包名稱來進一步完善它(請參閱https://stackoverflow.com/a/57002571/139985);例如


} catch (org.openqa.selenium.WebDriverException e) {

    sendException("Problem is with the selenium web driver");

} catch (IOException e) {

    if (e.getClass().getPackage().startsWith("java.net"))

        sendException("There is some problem with the network");

    else {

        throw e;  // Or diagnose differently

    }

}


查看完整回答
反對 回復(fù) 2023-03-23
?
SMILET

TA貢獻1796條經(jīng)驗 獲得超4個贊

java.net.Exception 不存在,java.lang.Exception 存在。


要檢查包是否為 java.net,請使用 e.getClass().getPackage():


catch(Exception e)

{

    if(e instanceof org.openqa.selenium.WebDriverException)

        sendException("Problem is with the selenium web driver");

    else if(e.getClass().getPackage().startsWith("java.net"))

        sendException("There is some problem with the network");

}


查看完整回答
反對 回復(fù) 2023-03-23
?
慕田峪9158850

TA貢獻1794條經(jīng)驗 獲得超8個贊

您可以像這樣捕獲 java.net 異常:


try {


}

catch (

    BindException 

    | ConnectException 

    | HttpRetryException

    | MalformedURLException

    | NoRouteToHostException

    | PortUnreachableException

    | ProtocolException

    | SocketException

    | SocketTimeoutException

    | UnknownHostException

    | UnknownServiceException

    | URISyntaxException

    e

){

    // do stuff with e

}

但是,如果您要調(diào)用instanceofafter 以不同方式處理每個異常,那有什么意義呢?


在這種情況下,您應(yīng)該使用不同的 catch 塊。


查看完整回答
反對 回復(fù) 2023-03-23
  • 4 回答
  • 0 關(guān)注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號