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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Java try/catch 塊中的編譯類問題

Java try/catch 塊中的編譯類問題

qq_笑_17 2023-05-10 14:05:26
我在 JAVA 代碼中有 try 和 catch 塊import java.io.FileOutputStream;import java.util.zip.ZipOutputStream;public class TryTest {    public static void main(String[] args) {        String zipPath ="D:/test";        try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipPath))){            String Hello ="Hello";            System.out.println("==============>"+Hello);        }catch (Exception e) {            e.printStackTrace();        }    }}我編譯的類看起來像/* * 使用 CFR 0.145 反編譯。*/ ....try {    try (ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(string));){        String string2 = "Hello";        System.out.println("==============>" + string2);    }....我很奇怪為什么在編譯時(shí)添加了另一個(gè) try 塊。完整源代碼在https://github.com/vikram06/java_try_catch_bug
查看完整描述

3 回答

?
三國紛爭

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊

這在 JLS?14.20.3.2 Extended try-with-resources中有解釋:

擴(kuò)展的 try-with-resources 語句的含義:

try?ResourceSpecification
????Block
Catchesopt
Finallyopt

由嵌套在 try-catch 或 try-finally 或 try-catch-finally 語句中的基本 try-with-resources 語句 (§14.20.3.1) 的以下翻譯給出:

try?{????try?ResourceSpecification
????????Block
}
Catchesopt
Finallyopt

翻譯的效果是將 ResourceSpecification 放在 try 語句“內(nèi)部”。這允許擴(kuò)展的 try-with-resources 語句的 catch 子句捕獲由于任何資源的自動(dòng)初始化或關(guān)閉而引起的異常。

此外,在執(zhí)行 finally 塊時(shí),所有資源都已關(guān)閉(或試圖關(guān)閉),這與 finally 關(guān)鍵字的意圖保持一致。


查看完整回答
反對(duì) 回復(fù) 2023-05-10
?
大話西游666

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊

當(dāng)您使用 try with resources(我的意思是try (...) {...)時(shí),Java 編譯器會(huì)生成額外的代碼部分來顯示來自 type 的局部變量的堆棧跟蹤Throwable。這是因?yàn)?Java 編譯器正在將 try with resources 語句分解為單獨(dú)的嘗試 - 一個(gè)用于關(guān)閉資源,另一個(gè)用于try.

反編譯后如何顯示 - 這取決于您使用的反編譯器。


查看完整回答
反對(duì) 回復(fù) 2023-05-10
?
白衣非少年

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊

對(duì)于它的價(jià)值 -實(shí)際字節(jié)碼與輸入的相似性要小得多 - 嘗試將 cfr 與參數(shù)一起使用


--tryresources false --decodefinally false


你得到了未加糖的代碼,它更接近實(shí)際的字節(jié)碼。


? ? public static void main(String[] args) {

? ? String zipPath = "D:/test";

? ? try {

? ? ? ? ZipOutputStream zipOut;

? ? ? ? block11 : {

? ? ? ? ? ? zipOut = new ZipOutputStream(new FileOutputStream(zipPath));

? ? ? ? ? ? Throwable throwable = null;

? ? ? ? ? ? try {

? ? ? ? ? ? ? ? String Hello2332 = "Hello";

? ? ? ? ? ? ? ? System.out.println("==============>" + Hello2332);

? ? ? ? ? ? ? ? if (zipOut == null) return;

? ? ? ? ? ? ? ? if (throwable == null) break block11;

? ? ? ? ? ? }

? ? ? ? ? ? catch (Throwable Hello2332) {

? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? throwable = Hello2332;

? ? ? ? ? ? ? ? ? ? throw Hello2332;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? catch (Throwable throwable2) {

? ? ? ? ? ? ? ? ? ? if (zipOut == null) throw throwable2;

? ? ? ? ? ? ? ? ? ? if (throwable == null) {

? ? ? ? ? ? ? ? ? ? ? ? zipOut.close();

? ? ? ? ? ? ? ? ? ? ? ? throw throwable2;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? ? ? zipOut.close();

? ? ? ? ? ? ? ? ? ? ? ? throw throwable2;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? catch (Throwable throwable3) {

? ? ? ? ? ? ? ? ? ? ? ? throwable.addSuppressed(throwable3);

? ? ? ? ? ? ? ? ? ? ? ? throw throwable2;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? try {

? ? ? ? ? ? ? ? zipOut.close();

? ? ? ? ? ? ? ? return;

? ? ? ? ? ? }

? ? ? ? ? ? catch (Throwable Hello2332) {

? ? ? ? ? ? ? ? throwable.addSuppressed(Hello2332);

? ? ? ? ? ? ? ? return;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? zipOut.close();

? ? ? ? return;

? ? }

? ? catch (Exception e) {

? ? ? ? e.printStackTrace();

? ? }

}


查看完整回答
反對(duì) 回復(fù) 2023-05-10
  • 3 回答
  • 0 關(guān)注
  • 353 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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