文章目录
- 调试与异常捕捉
- 调试
- 异常处理
- C#中的异常类
- 异常处理
- 抛出对象
调试与异常捕捉
很多时间,写代码不能一撸到底,中间都是经历过无数次的调试,才能正常正确的运行起来。.Net调试有很多方法和技巧。
调试
在C#中程序调试主要指在Visual Studio2022中调试程序,包括设置断点、监视断电,以及逐语句、逐过程、使用一些辅助窗口来调试程序。
鼠标左键点击最左边的灰色区域,会出现一个小红点,则表示设置断点成功!
点击,程序则会在你打断点的地方挂起。
如果你想让程序继续往下执行,则需要点击逐过程小图标,或者按F10。
如果你觉得没必要再调试下去了,则可以点击 “继续” 按钮,则程序会取消挂起遇到直到下一个断点。
取消断点
对着左边的小红点再点一次,则表示取消断点。
异常处理
异常是在程序执行期间出现的问题。C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。
异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。
- try:一个try块表示了一个将被激活的特定的异常的代码块。后跟一个或多个catch块。
- catch:程序通过异常处理程序捕获异常
- finally:finally块用于执行给定的语句,不管异常是否被抛出都会执行。
- throw:当问题出现时,程序抛出一个异常。
语法
try
{//可能出现异常的语句
}
catch(exceptionname e1)
{//错误处理代码
}
catch(exceptionname e2)
{//错误处理代码
}
catch(exceptionname e3)
{//错误处理代码
}
catch(exceptionname eN)
{//错误处理代码
}
finally
{//要执行的语句
}
C#中的异常类
C# 异常是使用类来表示的。C# 中的异常类主要是直接或间接地派生于 System.Exception
类。System.ApplicationException
和 System.SystemException
类是派生于 System.Exception
类的异常类。
System.ApplicationException 类支持由应用程序生成的异常。所以程序员定义的异常都应派生自该类。
下表列出了一些派生自 System.SystemException 类的预定义的异常类:
异常类 | 描述 |
---|---|
System.IO.IOException | 处理 I/O 错误。 |
System.IndexOutOfRangeException | 处理当方法指向超出范围的数组索引时生成的错误。 |
System.ArrayTypeMismatchException | 处理当数组类型不匹配时生成的错误。 |
System.NullReferenceException | 处理当依从一个空对象时生成的错误。 |
System.DivideByZeroException | 处理当除以零时生成的错误。 |
System.InvalidCastException | 处理在类型转换期间生成的错误。 |
System.StackOverflowException | 处理栈溢出生成的错误。 |
异常处理
C# 以 try 和 catch 块的形式提供了一种结构化的异常处理方案。使用这些块,把核心程序语句与错误处理语句分离开。
示例:
int result = 0;
public static void divsion(int num1,int num2)
{try{result = num1 / num2;}catch(DivideByZeroException e){Console.WriteLine("Exception caught:{0}",e);}finally{Console.WriteLine("Result:{0}",result);}
}
static void Main(string[] args)
{division(25,0);Console.ReadKey();
}
抛出对象
如果异常是直接或间接派生自 System.Exception 类,您可以抛出一个对象。您可以在 catch 块中使用throw
语句来抛出当前的对象,如下所示:
Catch(Exception e)
{...Throw e
}