簡體   English   中英

在循環中嘗試捕獲的替代方法

[英]Alternative to try-catch in a loop

我有一個Method對象列表,我想使用用戶提供的參數執行這些對象,直到運行時我才知道類型或值。

我想遍歷方法數組並使用invoke方法執行它們,直到其中一個方法成功執行而沒有異常。 這是一個很好的方法嗎?

        Method[] methods = cls.getMethods();

        for (Method method : methods) {
            try {
                method.invoke(obj, param1, param2);
                break;
            }
            catch(Exception e)
            {
                System.out.println(e);
            }
        }

有人告訴我,使用trycatch進行流量控制是個壞主意,但我不知道為什么。 我也不確定在這種情況下的替代方案是什么,我希望在正常執行中發生異常,因為用戶提供了參數。

任何幫助是極大的贊賞。

在這種特殊情況下,為什么不嘗試getParametersType() 當它的參數類型與 param1 和 param2 的類型匹配時,您實際上可以執行method.invoke(obj, param1, param2);

一般來說,這是個壞主意,因為你不知道一個函數有多重。 因此,在最終拋出異常之前,它可能會消耗大量處理時間或 CPU 周期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM