如果使用某個變量去獲取某個類型的對象創建,但是在這個類型的構造函數調用時拋出異常,請問此變量是否可以拿到對應的對象
如下面代碼
private void F1()
{
Foo foo = null;
try
{
foo = new Foo();
}
catch
{
// 忽略
}
}
class Foo
{
public Foo()
{
throw new Exception("lindexi is doubi");
}
~Foo()
{
}
}
請問在執行完成 F1 函數前,在 F1 函數定義的 foo 變量是什麼,是空,還是 Foo 對象
答案自然是空,原因是在 .NET 運行時的邏輯是先分配對象內存空間,然後再調用對象的構造函數,接着將對象賦值給到 foo 變量
而在進行第二步時就炸了,自然就不會給 foo 變量賦值