2013-10-02 33 views
1

我在try-catch中沒有初始化的變量。如何初始化try-catch中的變量?

try 
{ 
    var customcontroldata = svc.queryLookupsXml("customcontroldata"); 
} 
catch 
{ 
    Response.Write(@"<script>alert('We laugh at you');window.location.replace('Accounts.aspx');</script>"); 
    Response.End(); 
} 

我試圖初始化try-catch之外的變量來完成任務。我怎麼會得到customcontroldata變量初始化在這個方法中,這也是在我的代碼中稍後使用?

+0

將它初始化爲什麼? – Matthew

+0

@canon然後try/catch將是空的,因此毫無意義。 – Matthew

+0

好吧,當我寫它的變量變灰了。所以它像VAR(灰色)customercontroldata(/灰色)=和我得到的編譯錯誤是「名稱customecontroldata」不存在當前上下文中。 – TheDizzle

回答

4

您需要在try塊之外聲明該變量。您可以將其分配給null,然後在catch之後,檢查它在執行任何操作之前是否爲空。

在這種情況下,您還需要具體說明它的對象類型,因爲在聲明時您將無法將其指定給最終值,因爲這會發生在您的try

2
 XmlNode customcontroldata = null; 
     try 
     { 
      customcontroldata = svc.queryLookupsXml("customcontroldata"); 
     } 
     catch 
     { 
      Response.Write(@"<script>alert('We laugh at you');window.location.replace('Accounts.aspx');</     script>"); 
      Response.End(); 
     } 
+0

這不起作用,因爲.NET在編譯程序時不知道'null'是什麼類型,它必須知道'var'類型 –

+0

@tnw:我更新了我的答案。現在它應該編譯。 – ProgramFOX

+0

只能使用'object'作爲替身。 – canon

1

在您的代碼中,customcontroldata被限制在try塊內,因此在該範圍之外不存在。嘗試在嘗試之外聲明它如下...

myObjectType customcontroldata; = null4 
try 
{ 
    customcontroldata = svc.queryLookupsXml("customcontroldata"); 
} 
catch 
{ 
    Response.Write(@"<script>alert('We laugh at you');window.location.replace('Accounts.aspx');</     script>"); 
    Response.End(); 
} 
0

您想要在Try/Catch塊之外聲明變量,初始化爲空/空值。

您可以在塊內執行分配,但如果您計劃在TryCatch塊外部使用它,請始終測試該變量是否爲空/空。