C# 在if/switch块内使用try-catch捕获异常
我试图在switch语句中的if语句中捕获nullReferenceException。。。我尝试了许多不同的方法,但我无法真正捕捉错误,它只是不断导致崩溃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;
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会更有意义,谢谢!