每个程序员应该知道哪些框架异常?

时间:2010-04-26 09:45:31

标签: c# .net exception

我最近在C#中开始了一个新项目,并且,由于我在函数中编写了一些异常,我发现我并不知道应该使用哪个异常。

以下是许多程序中经常出现的常见异常:

您的程序中经常使用任何框架例外吗? 每个.net程序员应该知道哪些例外? 你什么时候使用自定义异常?

编辑:为了澄清这个话题,最初的问题更多的是“我可以抛出哪个例外?”应该“我应该抓住什么样的例外?”。

9 个答案:

答案 0 :(得分:9)

您的列表中仍有一些遗失。

此链接是您列表中的一个很好的补充:

msdn common Exceptions

Common Exception Types

答案 1 :(得分:2)

答案 2 :(得分:2)

当我必须使用一些特定于应用程序逻辑的逻辑引发异常时,我会使用自定义异常,而不是框架。

这意味着如果我的业务层收到的值对于正在执行的功能不正确,那么我会引发一个自定义异常。如果用户试图对我的业务规则禁止的数据库记录执行某些操作,那么这也是自定义异常的良好候选者。

基本上,您可以创建自定义异常,以将应用程序或业务特定异常与常规系统异常区分开来。您的自定义例外仍应来自System.Exception。使用它们所获得的好处是,您可以制作捕获它们并执行特定操作的代码 - 当您因逻辑错误或错误而导致随机System.Exception时,您无法始终采取特定操作。

答案 3 :(得分:2)

<强> IndexOutOfRangeException

  

尝试索引时抛出   数组通过小于的索引   零或超出范围   阵列。   -MSDN

答案 4 :(得分:2)

我确定您必须了解每个内置异常类。您应该知道可以抛出哪些异常,哪些异常抛出。您应该了解.net框架如何处理内置异常。你应该知道什么时候你最好继承现有的类,什么时候定义你自己的类型。有许多预定义的例外,几乎总能找到合适的例外。

我建议你在Jeffrey Richter的书中阅读它。

答案 5 :(得分:0)

DivideByZeroException

int SafeDivision(int x, int y)
{
    try
    {
        return (x / y);
    }
    catch (System.DivideByZeroException dbz)
    {
        System.Console.WriteLine("Division by zero attempted!");
        return 0;
    }
}

答案 6 :(得分:0)

OutOfMemoryException异常

你需要知道为什么会发生这种异常以及为什么你不应该尝试处理它。

答案 7 :(得分:0)

答案 8 :(得分:0)

ThreadAbortException,因为它在每个catch块后重新生成它的奇怪方式