[英]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);
}
}
有人告訴我,使用try和catch進行流量控制是個壞主意,但我不知道為什么。 我也不確定在這種情況下的替代方案是什么,我希望在正常執行中發生異常,因為用戶提供了參數。
任何幫助是極大的贊賞。
在這種特殊情況下,為什么不嘗試getParametersType()
。 當它的參數類型與 param1 和 param2 的類型匹配時,您實際上可以執行method.invoke(obj, param1, param2);
一般來說,這是個壞主意,因為你不知道一個函數有多重。 因此,在最終拋出異常之前,它可能會消耗大量處理時間或 CPU 周期。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.