Unity开发之C#基础-异常处理(Try Catch)

前言

其实本来这章应该将栈和队列的 但是后来想想 栈和队列在实际应用很少跟多的是大家了解一下栈和队列的基本常识比如先进先出的是谁后进先出的是谁这种 csdn有很多介绍栈和队列的文章 我觉得都比我理解深刻所以大家可以去搜索参照一下 今天我们继续往下讲解 如何自己主动的去处理异常 而不是等着系统提示我们出错 我们要学会未雨绸缪 主动的去捕捉错误 如果你在开发游戏的过程中遇到了错误 但是如果是系统报错程序就不会继续执行下去 那样游戏自己被迫卡死了 这样很不合理比如我们平时打游戏大家都多多少少遇到过比如以下这种:
Unity开发之C#基础-异常处理(Try Catch)_第1张图片
这种情况就是程序员们未雨绸缪写出来的异常解决方式之一,但我们要知道的是 错误类型是分很多种的

制作不易还请各位一键三连哦!

文章目录

  • 前言
  • C#错误类型
  • 异常概述
    • 什么是异常?
    • 怎么来处理异常?
    • 不处理后果
    • try catch finally结构
    • try catch 原理
  • 异常对象的属性
  • 常见异常类型
  • throw 关键字
  • 总结

C#错误类型

  1. 语法错误:代码在程序编译期间,编译器报出的错误,即为语法错误
  2. 异常:代码在运行期间,可能使得程序非正常终止的错误,叫做异常
  3. 逻辑错误:程序可以正常运行,但是和预想的结果不同(这种bug太折磨人了看不见摸不到代码量上来的时候 得一点点去查)

异常概述

什么是异常?

异常就是程序中的运行时错误,当出现异常时,系统会捕获这个错误并抛出一个异常

怎么来处理异常?

  1. 在c#中,提供了异常处理结构(try catch finally)
  2. 用户可以根据需要编写自己的异常类和抛出异常

不处理后果

很简单 如果异常不经过处理 很可能会逼停程序 使程序默认终止


那么 说了这么多 我们来实际操作一下怎么处理异常:

try catch finally结构

try{
// 可能会发生异常的代码.... }
catch(异常类型 变量){
// 异常处理代码... }
catch(异常类型){
// 异常处理代码... }
... catch{
// 异常处理代码... }
finally{
// 总会最后执行的代码... }

那么 在程序中具体是什么样的呢 我们实践一下:
Unity开发之C#基础-异常处理(Try Catch)_第2张图片
你看 我们这就很简单的自己捕捉到了异常 并且处理了它 倘若我们把这个异常比作是一个别的呢 比如网络断开链接 充值失败等等 是不是应该告诉用户 应该做什么而不是逼停自己的游戏程序
那么 这个原理是什么呢?

try catch 原理

• 我们把有可能发生异常的代码放在try语句块中
• 如果发生异常,则根据异常类型来与后面的多个catch后的类型进行比较
• 如果相同,则执行catch语句块中的内容
• 如子类的异常都不相同,则会执行父类catch{…}内容
• 执行一个catch结构后就不会在执行其他catch
• 最后执行finally。

异常对象的属性

  1. Message:异常的描述信息
  2. Stack Trace:描述异常发生的位置 (当catch捕捉到一个异常对象,可打印其异常信息 或者直接定位到其位置也可以方便我们查找)

常见异常类型

Unity开发之C#基础-异常处理(Try Catch)_第3张图片
那么 我们既然可以捕捉并且处理异常 是不是也可以自己抛出一个异常等待别的地方处理呢? 当然可以啦 下面我们介绍抛出异常:

throw 关键字

我们可以自己尝试产生一个异常

  1. 创建一个异常示例
  2. 用Throw将其抛出
  3. 可以在调用层使用try catch处理

我们可以自己实验一下:
创建两个类 Class1,Class2 代码如下:
Unity开发之C#基础-异常处理(Try Catch)_第4张图片
Unity开发之C#基础-异常处理(Try Catch)_第5张图片
其实在之后我们写代码时 try catch和if一样 可以有很多的catch 我们可能会自己继承异常类 然后自己封装一个可能会出现的各种异常的类 然后在别的类里调用他们 而不是每一个地方都要去自己捕捉异常处理 可能会统一处理很多异常。
Unity开发之C#基础-异常处理(Try Catch)_第6张图片


总结

异常的处理其实一般会在框架中封装广泛 大家以后学习会慢慢了解到的 基本的c#基础知识大家马上就要了解完了 后面还有两三章就会讲解完毕 然后开始unity的讲解使用 同学们可以多多做c#的练习题巩固一下之前的知识,下期见。

你可能感兴趣的:(c#,开发语言,unity,游戏程序,游戏引擎)