c# - WinForm 中的异常处理

标签 c# winforms exception

我是 C# 编程的初学者。我在使用表单构建应用程序时遇到了小问题。我会尽力在我的能力和经验范围内适本地解释它。当我尝试处理由在我的 Form1 中实例化的 Class1 引起的异常时出现问题。假设我在 Class1 中有函数“public int Calc(int a, int b)”。在 Form1 中,我实例化了此类以调用其“Calc”函数。如果我想发出错误消息(例如:除以零),我必须将函数调用包装到 try/catch 元素中:

//表格1:

Class1 C1 = new Class1();
int a = 5;
int b = 0;
int c = 0;

try{
   c = C1.Calc(a,b)
}
catch(DivideByZeroException e)
{
   // some error handling code
}

...我认为这个示例不是正确的 OOP 技术,所以我不得不决定将 try/catch 元素直接放入 Class1:

//类1:

public int Calc(int a, int b)
{
    int c = 0;
    try{
      c = a/b;
    }
    catch(DivideByZeroException e)
    {
      // .........
    }
    return c;
}

...问题是,我怎样才能将消息 (DivideByZeroException e) 放入我的 Form1 中以便能够处理它并向它发送消息。我不想在 Form1 中创建一些静态函数只是为了从 Class1 到达其中的 MessageBox 类,因为它在适当的 OOP 功能和 Class1 的可重用性方面没有意义。我已经阅读了有关事件和委托(delegate)的内容(我理解它们是指向类似于 C++ 的函数的简单指针),但它在某种程度上令人困惑,而且我未能将这种技术应用到我的代码中。能否请你写一个简单的例子来指引我正确的方向。

谢谢大家

赞博

最佳答案

正确的技术确实是第一位的。如果你不能在你的函数中处理它,那么你就没有业务尝试。将异常处理放在可以处理异常并且程序可以继续(或正常退出)并以适当的方式通知用户错误的地方。

关于c# - WinForm 中的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6891101/

相关文章:

android - monkeyrunner 导入操作系统数组索引outofbounds异常

c# - 使用 Code First 重命名 EF 中的列

c# - 使用 LINQ GroupBy 链生成具有聚合的多级层次结构

c# - Web Api 路由过滤器到子目录

c# - 如何获取长字符串并将其滚动到 15 个字符的文本控件/标签中?

winforms - 将 DataGridViewComboBoxCell 的数据源动态设置为基于其他单元格选择的过滤数据 View

java - 将元数据添加到 java throwable 对象

c# - 显示完整 InnerException 的正确方法是什么?

c# - 在了解每个 Select/SelectMany 结果的同时转换 Linq 中的序列

c# - 从 AutoCompleteStringCollection c# 中删除重复项