我想知道是否有任何方法將函數傳遞給另一個函數來處理try/catch。我正在研究沒有任何異常處理的現有代碼庫。如何傳遞函數作爲參數?
-1
A
回答
0
2
注:此回答解決問題,而不是標題的文本,因爲這個問題似乎並沒有與傳遞函數作爲參數做。
確切地知道你想要做什麼有點困難,但你肯定可以在你自己的try…catch
塊中調用公共方法。
public void ExistingMethod()
{
// bad code
// bad code
throw new NullReferenceException("The previous developers are always the problem.");
}
…
public void MyMethod(ComponentFromOldCode component)
{
try
{
component.ExistingMethod();
}
catch (NullReferenceException nre)
{
// do something
}
catch (Exception ex)
{
// do something
}
}
你無法做的*是將錯誤處理添加到對該函數的現有調用中。
您可以改爲添加一些高級錯誤處理,這至少會讓您有機會記錄異常並向用戶顯示更優雅的失敗體驗。
*不能合理
+0
神奇的例外文本,先生。 A +。 –
0
查找到Actions。他們將允許您將匿名方法作爲參數傳遞。
但是,我不認爲這會幫助你解決你的問題。您可能要重構代碼庫以進行適當的異常處理。
0
您可以使用Lambda表達式
class Program
{
private static int Sum(int a, int b)
{
return a + b;
}
private static int Multiply(int a, int b)
{
return a * b;
}
private static int GetResult(Func<int, int, int> solver, int a, int b)
{
try {
return solver(a, b);
} catch {
}
return 0; // your default return
}
static void Main(string[] args)
{
var a = 2;
var b = 3;
var sum = GetResult(Sum, a, b);
var multiply = GetResult(Multiply, a, b);
}
在
Lambda表達式(C#編程指南)
http://msdn.microsoft.com/en-us/library/bb397687.aspx
Func鍵代表
更多信息
相關問題
- 1. 如何傳遞函數作爲參數?
- 2. 當函數作爲參數傳遞時,參數如何傳遞給該函數?
- 3. 傳遞函數作爲參數傳遞給另一個函數
- 4. 傳遞函數數組作爲參數
- 5. JavaScript:如何將匿名函數作爲函數參數傳遞?
- 6. 如何將函數作爲函數swift的參數傳遞?
- 7. 傳遞函數作爲python參數
- 8. 傳遞id作爲函數的參數
- 9. lambda函數作爲參數傳遞
- 10. 傳遞函數作爲參數用Clojure
- 11. 將java函數作爲參數傳遞
- 12. PL/SQL傳遞函數作爲參數
- 13. 傳遞函數作爲參數在HAXE
- 14. Javascript:傳遞函數作爲參數
- 15. 傳遞函數作爲參數
- 16. GLib HashTable傳遞函數作爲參數
- 17. 將函數作爲參數傳遞
- 18. 函數作爲參數傳遞
- 19. 傳遞函數作爲參數
- 20. 作爲參數傳遞一個函數?
- 21. 傳遞$作爲函數參數(jQuery的)
- 22. SystemVerilog傳遞函數作爲參數
- 23. 傳遞函數作爲參數
- 24. 傳遞函數作爲參數pthread_once
- 25. 傳遞javascript函數作爲參數
- 26. 將observableArray作爲函數參數傳遞
- 27. Bash:傳遞函數作爲參數
- 28. 的Xquery:傳遞函數作爲參數
- 29. 將va_list作爲函數參數傳遞
- 30. 傳遞函數作爲參數CPP
我覺得這個問題回答沿[面向方面編程]的線謊言(http://en.wikipedia.org/wiki/Aspect-oriented_programming)。看看[PostSharp](http://www.sharpcrafters.com/)。 – Ahmad