gpt4 book ai didi

c# - Inside Try/Catch(第二次 Try/Catch 在方法内部)

转载 作者:行者123 更新时间:2023-12-02 22:26:43 25 4
gpt4 key购买 nike

请看下面的代码:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
try
{
mymethod();
}
catch (Exception ex)//First catch
{
MessageBox.Show(ex.ToString());
}
}

private void mymethod()
{
int a = 10;
int b = 0;
try
{
int c = a / b;
}
catch (Exception ex)//Second catch
{
MessageBox.Show(ex.ToString());
//int c = a / b;
throw new Exception(ex.ToString());
}
}
}

我想强制第一个 catch 在第二个 catch 执行后执行!我怎样才能强制上面的代码运行并显示第二个 catch 错误? 我想为两个 catch block 看到相同的 ex.ToString()

提前致谢。

最佳答案

不是抛出一个新的异常,而是重新抛出现有的异常:

private void mymethod()
{
int a = 10;
int b = 0;
try
{
int c = a / b;
}
catch (Exception ex)//Second catch
{
MessageBox.Show(ex.ToString());
//int c = a / b;
throw; // change here
}
}

See this post 了解有关如何正确重新抛出异常的详细信息。

更新:捕获 mymethod 异常并将这些详细信息提供给点击处理程序的另一种但不太受欢迎的方法是将异常包裹在一个新的一:

private void mymethod()
{
int a = 10;
int b = 0;
try
{
int c = a / b;
}
catch (Exception ex)//Second catch
{
MessageBox.Show(ex.ToString());
//int c = a / b;
throw new Exception("mymethod exception", ex); // change here
}
}

同样,我链接到的帖子有更多详细信息。

关于c# - Inside Try/Catch(第二次 Try/Catch 在方法内部),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12875018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com