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

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

try/catch 塊捕獲異常后如何繼續(xù)執(zhí)行代碼?

try/catch 塊捕獲異常后如何繼續(xù)執(zhí)行代碼?

UYOU 2023-09-20 16:02:19
try{someTask();someTask2();someTask3();someTask4();someTask5();}catch (Exception e){// log the error}如果我的一項任務(wù)失敗,我想要一份所發(fā)生情況的日志,但我想繼續(xù)運行其余任務(wù)。我知道我可以用自己的 try/catch 包圍每個任務(wù)方法,但是有沒有一種更干凈的方法,這樣我就沒有那么多的 try/catch 塊?
查看完整描述

4 回答

?
躍然一笑

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

最好的方法是讓每個方法都在內(nèi)部使用try/執(zhí)行catch。


void someMethod(){

 try{

//code of method 1

 }catch(Exception e){

  e.printstackTrace()

 }

}

然后在沒有try/的情況下將它們?nèi)空{(diào)用catch。


someTask();

someTask2();

someTask3();

someTask4();

someTask5();

現(xiàn)在,如果一個失敗了,另一個就會繼續(xù)。


查看完整回答
反對 回復(fù) 2023-09-20
?
HUH函數(shù)

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

假設(shè)您的任務(wù)返回void并且不帶任何參數(shù),您可以創(chuàng)建一個功能接口:


@FunctionalInterface

interface Task {

    void perform() throws Exception;

}

然后創(chuàng)建一個輔助方法來處理日志記錄并將其作為Task參數(shù):


private static void invoke(Task task) {

    try {

        task.perform();

    } catch (Exception e) {

        // log here    

    }

}

然后使用它:


class MyClass {

    public static void main(String[] args) {

        invoke(MyClass::someTask);

        invoke(MyClass::someTask1);

    }


    private static void someTask() throws Exception {

        System.out.println("Task 1");

    }


    private static void someTask1() throws Exception {

        throw new Exception("Exception");

    }

}


查看完整回答
反對 回復(fù) 2023-09-20
?
米脂

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

要運行其余任務(wù),您必須將每個任務(wù)放在單獨的“try”塊中。這是一種干凈的方法。否則,您如何知道哪個任務(wù)失敗以及如何調(diào)試它?


此外,將每個預(yù)期錯誤單獨放在 catch 塊中被認為是一種很好的做法,從更具體的開始,以更一般的結(jié)束。以便您可以立即了解發(fā)生了什么問題并節(jié)省調(diào)試時間


try {

    someTask1;

}catch (ClassNotFoundException e) {

// log the error

}catch (Exception e) {

// log the error

}


try {

    someTask2;

}catch (ArithmeticException e) {

// log the error

}catch (ArrayIndexOutOfBoundsException e) {

// log the error

}catch (Exception e) {

// log the error

}


查看完整回答
反對 回復(fù) 2023-09-20
?
守著星空守著你

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

也許使用遞歸方法:


public void myMethod (int state){


 try

 {


  switch(state) {

    case 1:

      state+=1;

      someTask();

      myMethod(state);

      break;

    case 2:

      state+=1;

      someTask2();

      myMethod(state);

      break;

    case 3:

      state+=1;

      someTask3();

      myMethod(state);

      break;

    default:

      state=-1;

}


 }

  catch (Exception e)

 {

 // If some task had an exception, this catch call the next task, because the state variable incremented.

  myMethod(state);

 }


public static void main (String[] Args){


myMethod(1);


}


}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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