C#程序调试与异常处理(try catch)前言:
这是一篇值得您收藏的文章。 我们在制作表单应用或者其他程序的时候,难免会遇到一些bug,运行时出现一些莫名其妙的效果,或者系统直接报异常。 C#提供了强大的异常处理机制,用于引起应用程序可能出现的问题。 错误或其他异常会导致执行暂停。 在这篇文章中,我们将一起学习调试和异常处理。 好的,我们开始学习吧。
一天一次的学习让我进步
1. 程序调试 1.1 常见错误
当我们进行开发时,程序调试是检查和验证程序能否正常运行的有效手段。 编写程序时难免会遇到一些错误。 为了解决错误c#异常处理机制 unity,我们需要对正在运行的程序进行调试c#异常处理机制 unity,找出错误的根本原因。 常见的错误信息有以下三种:
1、编译错误:指程序编译过程中出现的错误。 常见的语法错误是缺少括号和分号。
2. 逻辑错误:当应用程序未按预期执行时,就会出现逻辑错误。 这通常是由于语法不正确、算法错误造成的,例如结果不正确、公式不等等。 这种错误是最难犯的。
3、操作错误:指程序运行过程中执行了非法操作或某些操作失败。 找不到需要打开的文件、内存泄漏、被零除等异常只有在运行时才会出现。
1.2.调试方法
我们在调试程序时经常使用的一种方法是使用断点。 我们在操作时:插入断点->调试断点->删除断点。使用断点的快捷键有3个:F11:逐条语句操作、执行一行代码、F10:逐进程操作、执行一段代码,shift+F10:执行跳出操作
2.异常捕获和处理
异常是程序执行过程中出现的问题。 C# 中的异常是对程序运行时发生的特殊情况的响应,例如尝试除以零。 异常提供了一种将控制从程序的一个部分转移到另一个部分的方法。 C# 异常处理基于四个关键字:try、catch、finally 和 throw。
//概念
try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。
catch:程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。
finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果您打开一个文件,不管是否出现异常文件都要被关闭。
throw:当问题出现时,程序抛出一个异常。使用 throw 关键字来完成。
//用法
try ... catch{//异常处理代码} //捕获异常,可以多个catch
try ... finally{ //用于消除try 块中分配的任何资源以及 运行任何即使在发生异常时也必须执行的代码} //清除异常
try ... catch ... finally // 处理所有异常,前面两个的结合
//需要抛出对象
如果异常是直接或间接派生自 System.Exception 类,您可以抛出一个对象。您可以在 catch 块中使用 throw 语句来抛出当前的对象,如下所示:
Catch(Exception e)
{
...
Throw e
}
2.1 理解异常类
了解一些常用的异常类,并展示Exception的所有异常类。
//常用的异常类
Exception:所有异常对象的基类。
SystemException:运行时产生的所有错误的基类。
IndexOutOfRangeException:当一个数组的下标超出范围时运行时引发。
NullReferenceException:当一个空对象被引用时运行时引发。
InvalidOperationException:当对方法的调用对对象的当前状态无效时,由某些方法引发。
ArgumentException:所有参数异常的基类。
ArgumentNullException:在参数为空(不允许)的情况下,由方法引发。
ArgumentOutOfRangeException:当参数不在一个给定范围之内时,由方法引发。
InteropException:目标在或发生在CLR外面环境中的异常的基类。
ComException:包含COM类的HRESULT信息的异常。
SEHException:封装Win32结构异常处理信息的异常。
SqlException:封装了SQL操作异常。
//其他Exception 类描述
SystemException 其他用户可处理的异常的基本类
ArgumentException 方法的参数是非法的
ArgumentNullException 一个空参数传递给方法,该方法不能接受该参数
ArgumentOutOfRangeException 参数值超出范围
ArithmeticException 出现算术上溢或者下溢
ArrayTypeMismatchException 试图在数组中存储错误类型的对象
BadImageFormatException 图形的格式错误
DivideByZeroException 除零异常
DllNotFoundException 找不到引用的DLL
FormatException 参数格式错误
IndexOutOfRangeException 数组索引超出范围
InvalidCastException 使用无效的类
InvalidOperationException 方法的调用时间错误
MethodAccessException 试图访问思友或者受保护的方法
MissingMemberException 访问一个无效版本的DLL
NotFiniteNumberException 对象不是一个有效的成员
NotSupportedException 调用的方法在类中没有实现
NullReferenceException 试图使用一个未分配的引用
OutOfMemoryException 内存空间不够
PlatformNotSupportedException 平台不支持某个特定属性时抛出该错误
StackOverflowException 堆栈溢出
Exception:所有异常对象的基类。
SystemException:运行时产生的所有错误的基类。
IndexOutOfRangeException:当一个数组的下标超出范围时运行时引发。
NullReferenceException:当一个空对象被引用时运行时引发。
InvalidOperationException:当对方法的调用对对象的当前状态无效时,由某些方法引发。
ArgumentException:所有参数异常的基类。
ArgumentNullException:在参数为空(不允许)的情况下,由方法引发。
ArgumentOutOfRangeException:当参数不在一个给定范围之内时,由方法引发。
InteropException:目标在或发生在CLR外面环境中的异常的基类。
ComException:包含COM类的HRESULT信息的异常。
SEHException:封装Win32结构异常处理信息的异常。
SqlException:封装了SQL操作异常。
2.2 自定义异常
在实际应用中,如果系统提供的异常类不能满足需要,我们可以自定义异常,自己创建异常类。
class outException : ApplicationException//我们自定义的异常类继承Exception的派生类ApplicationException来完成的
{
string str;
public outException():base()//定义构造函数
{
this.str = "我们不接受1这个数作为除数,IC00说的!";
}
public override string ToString()//重写一下Tostring
{
return str.ToString();
}
}
总结
调试是编写程序的重要步骤和方法。 异常处理是为了避免应用程序错误游戏素材,是防止程序错误的防火墙。 当我们编写程序时人物立绘,调试这项技能是必不可少的。 它可以让我们的程序更加快速的查询和纠正错误,方便我们的程序开发。 学习这项技能可以帮助我们开发出高质量的程序。 好吧,创作并不容易。 点赞、关注、评论、收藏! ! ! 很好的评论。 。 。 。
文章来源:https://blog.csdn.net/qq_46104786/article/details/121576436