如果发生exception,请显示消息框

我想知道将一个exception从一个方法传递给我的表单的正确方法是什么。

public void test() { try { int num = int.Parse("gagw"); } catch (Exception) { throw; } } 

形成:

 try { test(); } catch (Exception ex) { MessageBox.Show(ex.Message); } 

这样我就看不到我的文本框了。

如果您只想使用exception的摘要:

  try { test(); } catch (Exception ex) { MessageBox.Show(ex.Message); } 

如果要查看整个堆栈跟踪(通常更适合调试),请使用:

  try { test(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } 

我有时使用的另一种方法是:

  private DoSomthing(int arg1, int arg2, out string errorMessage) { int result ; errorMessage = String.Empty; try { //do stuff int result = 42; } catch (Exception ex) { errorMessage = ex.Message;//OR ex.ToString(); OR Free text OR an custom object result = -1; } return result; } 

在您的表单中,您将拥有以下内容:

  string ErrorMessage; int result = DoSomthing(1, 2, out ErrorMessage); if (!String.IsNullOrEmpty(ErrorMessage)) { MessageBox.Show(ErrorMessage); } 

有很多方法,例如:

方法一:

 public string test() { string ErrMsg = string.Empty; try { int num = int.Parse("gagw"); } catch (Exception ex) { ErrMsg = ex.Message; } return ErrMsg } 

方法二:

 public void test(ref string ErrMsg ) { ErrMsg = string.Empty; try { int num = int.Parse("gagw"); } catch (Exception ex) { ErrMsg = ex.Message; } } 
  try { // your code } catch (Exception w) { MessageDialog msgDialog = new MessageDialog(w.ToString()); }