C# 在if/switch块内使用try-catch捕获异常

C# 在if/switch块内使用try-catch捕获异常,c#,if-statement,switch-statement,try-catch,C#,If Statement,Switch Statement,Try Catch,我试图在switch语句中的if语句中捕获nullReferenceException。。。我尝试了许多不同的方法,但我无法真正捕捉错误,它只是不断导致崩溃 try { switch (selectedOption) { case "1": break;

我试图在switch语句中的if语句中捕获nullReferenceException。。。我尝试了许多不同的方法,但我无法真正捕捉错误,它只是不断导致崩溃

               try 
                {
                switch (selectedOption)
                {

                    case "1":
                        break;
                    case "2":
                        if (textBox1.Text == "TEXT")
                        {
                            MessaageBox.Show("TEXT")
                        }
                        else
                        {
                            MessageBox.Show("ELSETEXT")
                        }
                        throw new Exception;
                    case "3":
                        break;
                     default:
                        break;
                 }
               }
              catch (Exception)
                  {
                     MessageBox.Show("An error has occured");
                  }
在案例2中,如果textbox1==text,我会得到一个空引用异常,当没有值时,我希望捕获该空引用并显示一条消息


谢谢你的帮助/建议

只需将所有必要的代码放入一个单独的函数中,然后检查
字符串的值
。不要使用
而尝试{}catch{}
。如果只是检查空值,则不建议这样做

函数示例:

private void CheckText(字符串文本,字符串相等,
字符串错误=“文本为空”,字符串notequal=“ELSETEXT”){
//我们让用户在messageBox中看到的消息。
string messageText=string.Empty;
//检查要检查的字符串是否为空,
//或null或仅由空格组成
if(string.IsNullOrWhiteSpace(text)| | string.IsNullOrWhiteSpace(equal)){
messageText=错误;
}
//检查两个检查字符串是否相等
else if(string.Equals(text,equal)){
messageText=equal;
}
否则{
messageText=notequal;
}
MessageBox.Show(messageText);
}
现在,您可以在
catch
块中调用该函数,并将必要的值作为参数输入该函数

函数调用示例:

案例“2”:
选中文本(textBox1.Text,“文本”);
打破

抛出新异常无效,syntaxI不会使用
try..catch
来处理
NullReferenceException
;这是很容易预防的。在您的情况下,无论如何都不会抛出异常,因为
null==“TEXT”
的计算结果为
false
,所以没有异常。很好,在尝试使用它之前检查值是否为null会更有意义,谢谢!