我最近在C#中开始了一个新项目,并且,由于我在函数中编写了一些异常,我发现我并不知道应该使用哪个异常。
以下是许多程序中经常出现的常见异常:
您的程序中经常使用任何框架例外吗? 每个.net程序员应该知道哪些例外? 你什么时候使用自定义异常?
编辑:为了澄清这个话题,最初的问题更多的是“我可以抛出哪个例外?”应该“我应该抓住什么样的例外?”。
答案 0 :(得分:9)
答案 1 :(得分:2)
答案 2 :(得分:2)
当我必须使用一些特定于应用程序逻辑的逻辑引发异常时,我会使用自定义异常,而不是框架。
这意味着如果我的业务层收到的值对于正在执行的功能不正确,那么我会引发一个自定义异常。如果用户试图对我的业务规则禁止的数据库记录执行某些操作,那么这也是自定义异常的良好候选者。
基本上,您可以创建自定义异常,以将应用程序或业务特定异常与常规系统异常区分开来。您的自定义例外仍应来自System.Exception
。使用它们所获得的好处是,您可以制作捕获它们并执行特定操作的代码 - 当您因逻辑错误或错误而导致随机System.Exception
时,您无法始终采取特定操作。
答案 3 :(得分:2)
<强> IndexOutOfRangeException
强>
尝试索引时抛出 数组通过小于的索引 零或超出范围 阵列。 -MSDN
答案 4 :(得分:2)
我确定您必须了解每个内置异常类。您应该知道可以抛出哪些异常,哪些异常抛出。您应该了解.net框架如何处理内置异常。你应该知道什么时候你最好继承现有的类,什么时候定义你自己的类型。有许多预定义的例外,几乎总能找到合适的例外。
我建议你在Jeffrey Richter的书中阅读它。
答案 5 :(得分:0)
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块后重新生成它的奇怪方式