[英]How do i catch the CS7036 error
因此,我對C#相當陌生,而且我一直在學習如何將代碼從python轉換為C#。 現在,我偶然發現的問題是:如何捕獲CS7036錯誤。 它在python中稱為“ AttributeError”,如果嘗試實例化一個類而沒有必要的參數數量,則會發生這種情況。
public Vector Crossproduct(Vector other)
{
try
{
List<double> output = new List<double>()
{
Y* other.Z - other.Y * Z,0 - (X * other.Z- other.X * Z),X* other.Y - other.X * Y
};
Vector outputvector = new Vector(output);
return outputvector;
}
catch (Exception)
{
throw;
}
}
我已經對此進行了Google搜索,發現該錯誤幾乎沒有。 這是Microsoft C#文檔的鏈接。 在這里和這里。
我的問題不是如何解決該錯誤,而是如何捕獲該錯誤,我很清楚。
您在這里誤解了一些基本知識。 編譯器錯誤不是運行時異常。 他們是編譯器告訴你,代碼是不合法的 。 沒有任何功能可以在運行時捕獲編譯器錯誤,因為非法代碼永遠不會首先運行。 這是非法的!
現在,在C#中有些情況下,在運行時會產生涉及dynamic的編譯器錯誤。 也就是說:C#有一個子系統,允許它與動態語言(例如Python或JavaScript)進行互操作。 使用該功能時,通常在編譯時做出的決定將推遲到運行時,在這種情況下,實際上您可能會遇到必須在運行時捕獲編譯器錯誤的情況。
您不在那種情況下,很少有涉及構造函數的動態情況。 如果將來遇到這種情況, RuntimeBinderException
捕獲的異常是RuntimeBinderException
。
請參閱擁有動態變量如何影響性能? 如果您對此主題感興趣,請對dynamic
原理進行一些思考。
C#是一種編譯語言,因此您不必“捕獲”這種錯誤,因為編譯器會為您捕獲它。 如果嘗試在沒有必需參數的情況下調用類構造函數,則代碼將根本無法編譯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.