2013-05-12 37 views
1

我不想使用try和catch檢查複選框R1P1時,彈出消息框。但是我不知道把什麼放在catch裏面()。哪個Catch Execption要使用?

private void button2_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      if (R1P1.Checked) 
      { 
       string Plats1 = "R1P1"; 
       TxtP.Text = Plats1; 
      } 
      else 
      { 
       TxtP.Text = null; 
      } 
     } 
     catch (???) 
     { 
      MessageBox.Show("Hey"); 
     } 

我試過catch(R1P1.Checked == false;)但它不工作。 在程序中,您有一堆票系統的複選框,當您不檢查任何人時,無論如何請單擊繼續,我希望複選框出現。

+2

你不抓住條件 - 你趕上* *例外。沒有任何跡象表明這裏有例外情況或需要例外。 – 2013-05-12 11:42:35

+0

Try/Catch塊不常用於流量控制。在某些情況下,他們可以像這樣使用,但你的不是其中之一。 – Dirk 2013-05-12 11:42:47

+1

似乎你不能在這個特定的場景中使用try和catch。感謝您的回答和評論! – user2367396 2013-05-12 11:50:21

回答

2

請告訴我嘗試捕捉呢?這是行不通的:

private void button2_Click(object sender, EventArgs e) 
{ 

     if (R1P1.Checked) 
     { 
      string Plats1 = "R1P1"; 
      TxtP.Text = Plats1; 
     } 
     else 
     { 
      TxtP.Text = null; 
      MessageBox.Show("Hey"); 
     } 
} 

好點喬恩! AFAIK {}定義了一個代碼塊,它有自己的範圍:當你點擊右括號時,通常在它們之間聲明的任何內容都不再存在。這個男人的字符串Plats1從來沒有使用過,無法在其他地方看到。

使這個相同:

private void button2_Click(object sender, EventArgs e) 
{ 
     if (R1P1.Checked) 
     { 
      TxtP.Text = "R1P1"; 
      //anything declared here (i.e. a new variable) 
     }//is gone by here 
     else 
     { 
      TxtP.Text = null; 
      MessageBox.Show("Hey"); 
     } 
} 
+1

理想情況下,沒有無意義的局部變量'Plats1' :) – 2013-05-12 11:42:56

+0

使用try和catch的目的是爲了更高的成績... – user2367396 2013-05-12 11:43:09

+1

@ user2367396:然後你應該找到一個不同的例子,其中例外*是*合適的。 – 2013-05-12 11:43:39

3

在這種情況下,try{}catch{}塊根本沒有點。

爲什麼要抓住一個例外呢?

你已經知道時不會檢查它 - 只要調用消息框,您else條款:

if (R1P1.Checked) 
{ 
    TxtP.Text = "R1P1"; 
} 
else 
{ 
    TxtP.Text = ""; 
    MessageBox.Show("Hey"); 
}