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

前言

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

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

文章目录

  • 前言
  • 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{
// 总会最后执行的代码... }

那么 在程序中具体是什么样的呢 我们实践一下:
在这里插入图片描述
你看 我们这就很简单的自己捕捉到了异常 并且处理了它 倘若我们把这个异常比作是一个别的呢 比如网络断开链接 充值失败等等 是不是应该告诉用户 应该做什么而不是逼停自己的游戏程序
那么 这个原理是什么呢?

try catch 原理

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

异常对象的属性

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

常见异常类型

在这里插入图片描述
那么 我们既然可以捕捉并且处理异常 是不是也可以自己抛出一个异常等待别的地方处理呢? 当然可以啦 下面我们介绍抛出异常:

throw 关键字

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

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

我们可以自己实验一下:
创建两个类 Class1,Class2 代码如下:
在这里插入图片描述
在这里插入图片描述
其实在之后我们写代码时 try catch和if一样 可以有很多的catch 我们可能会自己继承异常类 然后自己封装一个可能会出现的各种异常的类 然后在别的类里调用他们 而不是每一个地方都要去自己捕捉异常处理 可能会统一处理很多异常。
在这里插入图片描述


总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/145730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何从Android手机恢复已删除的联系人

联系人应该是最重要的信息之一。 如果您不小心从Android手机中删除了联系人,该怎么办? 如果不容易找回丢失的联系人,您可以使用奇客数据恢复安卓版。 从Android的手机中恢复已删除的联系人 只需删除Android联系人,然后您就可以通…

ubuntu中使用 vscode 连接docker开发环境

文章目录 ubuntu中使用 vscode 连接docker开发环境步骤一:安装 Remote Development 插件步骤二:连接远程环境步骤三:开发 问题解决参考连接 ubuntu中使用 vscode 连接docker开发环境 Remote Development 是一个 Visual Studio Code 插件&…

WPF小知识

在编写WPF程序遇到一些小问题&#xff0c;所以记录起来&#xff0c;查其他方便。 Label自动换行 网上搜的都不能自动换行&#xff0c;发现使用Run 就可以。在脚本中直接调用labTip.Text进行赋值就可以了。 <Label Foreground"#FF9E9E9E" FontSize"16"…

Google codelab WebGPU入门教程源码<4> - 使用Uniform类型对象给着色器传数据(源码)

对应的教程文章: https://codelabs.developers.google.com/your-first-webgpu-app?hlzh-cn#5 对应的源码执行效果: 对应的教程源码: 此处源码和教程本身提供的部分代码可能存在一点差异。 class Color4 {r: number;g: number;b: number;a: number;constructor(pr 1.0, …

【hive-解决】HiveAccessControlException Permission denied: CREATEFUNCTION

文章目录 一.任务描述二. 解决 一.任务描述 Error while compiling statement: FAILED: HiveAccessControlException Permission denied: Principal [nameroot, typeUSER] does not have following privileges for operation CREATEFUNCTION [ADMIN PRIVILEGE on INPUT, ADMIN…

华为 Mate 60 Pro 拆解:陆制零件比率上升至47% | 百能云芯

近日&#xff0c;日经新闻联合研究公司Fomalhaut Techno Solutions对华为 Mate 60 Pro 进行了拆解&#xff0c;揭示了这款于8月发布的新型智能手机的成本结构。拆解结果显示&#xff0c;该手机的国产零部件比例达到了47%&#xff0c;相较于三年前的 Mate 40 Pro&#xff0c;提高…

自动驾驶汽车:人工智能最具挑战性的任务

据说&#xff0c;自动驾驶汽车是汽车行业梦寐以求的状态&#xff0c;将彻底改变交通运输业。就在几年前&#xff0c;对自动驾驶汽车的炒作风靡一时&#xff0c;那么到底发生了什么呢&#xff1f;这么多公司吹嘘到2021年我们将迎来的无人驾驶汽车革命在何处&#xff1f;事实证明…

(论文阅读31/100)Stacked hourglass networks for human pose estimation

31.文献阅读笔记 简介 题目 Stacked hourglass networks for human pose estimation 作者 Alejandro Newell, Kaiyu Yang, and Jia Deng, ECCV, 2016. 原文链接 https://arxiv.org/pdf/1603.06937.pdf 关键词 Human Pose Estimation 研究问题 CNN运用于Human Pose E…

基于 selenium 实现网站图片采集

写在前面 有小伙伴选题&#xff0c;简单整理理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有其它的路都是不完整的&#xff0c;是人的逃避方式&#xff0c;是对…

RabbitMQ之发布确认高级

文章目录 前言一、发布确认 整合springboot1、确认机制方案2、代码架构图3、配置文件4、添加配置类5、消息生产者6、回调接口7、消息消费者8、结果分析 二、回退消息1、Mandatory 参数2、消息生产者代码3、回调接口4、结果分析 三、备份交换机1、代码架构图2、修改配置类3、报警…

jQuery【jQuery树遍历、jQuery动画(一)、jQuery动画(二)】(四)-全面详解(学习总结---从入门到深化)

目录 jQuery树遍历 jQuery动画(一) jQuery动画(二) jQuery树遍历 1、 .children() 获得子元素&#xff0c;可以传递一个选择器参数 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-…

【152.乘积最大子数组】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:int maxProduct(vector<int>& nums) {int nnums.size();vector<int> f(n);vector<int> g(n);f[0]g[0]nums[0];int retnums[0];for(int i1;…

html书本翻页效果,浪漫表白日记本(附源码)

文章目录 1.设计来源1.1 书本正面1.2 界面1-21.3 界面3-41.4 界面5-61.5 界面7-81.6 界面9-101.7 界面11-121.8 书本结尾 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/1…

JS进阶——构造函数数据常用函数

1、深入对象 1.1 创建对象三种方式 1.1.1 利用对象字面量创建对象 1.1.2 利用new Object创建对象 1.1.3 利用构造函数创建对象 1.2 构造函数 构造函数&#xff1a;是一种特殊的函数&#xff0c;主要用来初始化对象 使用场景&#xff1a;常规的{...}语法允许创建一个对象。…

创邻科技亮相ISWC 2023,国际舞台见证知识图谱领域研究突破

近日&#xff0c;第22届国际语义网大会 ISWC 2023 在雅典希腊召开&#xff0c;通过线上线下的形式&#xff0c;聚集了全球的顶级研究人员、从业人员和行业专家&#xff0c;讨论、发展和塑造语义网和知识图谱技术的未来。创邻科技CEO张晨博士作为知识图谱行业专家受邀参会&#…

熟悉 Unity HDRP设置以提高性能

HDRP Version 10 了解如何利用高清晰度渲染管道(HDRP)设置&#xff0c;以最大限度地提高性能&#xff0c;并一次实现强大的图形。 随着Unity 2020 LTS及以后的HDRP版本10的发布&#xff0c;HDRP包继续优先考虑其用户友好的界面&#xff0c;灵活的功能&#xff0c;稳定性和总体…

2023年软件安装管家目录最新

软件目录 ①【电脑办公】电脑系统&#xff08;直接安装&#xff09;Win7Win8Win10OfficeOffice激活office2003office2007office2010office2013office2016office2019office365office2021wps2021Projectproject2007project2010project2016project2019project2013project2021Visio…

机器学习中的独立和同分布 (IID):假设和影响

一、介绍 在机器学习中&#xff0c;独立和同分布 &#xff08;IID&#xff09; 的概念在数据分析、模型训练和评估的各个方面都起着至关重要的作用。IID 假设是确保许多机器学习算法和统计技术的可靠性和有效性的基础。本文探讨了 IID 在机器学习中的重要性、其假设及其对模型开…

leetcode刷题日记:141. Linked List Cycle(环形链表)

这一题是给我们一个链表让我们判断这是否是一个环形链表&#xff0c;我们知道如果一个链表中有环的话这一个链表是没有办法访问到尾的&#xff0c; 假若有如图所示的带环链表&#xff1a; 我们从图示中很容易看出来这一个链表在访问的时候会在里面转圈&#xff0c;我们再来看看…

stable diffusion comfyui的api使用教程

一、为什么要使用comfyui的api?对比webui的api&#xff0c;它有什么好处&#xff1f; 1、自带队列 2、支持websocket 3、无需关心插件是否有开放api接口&#xff0c;只要插件在浏览器中可以正常使用&#xff0c;接口就一定可以使用 4、开发人员只需关心绘图流程的搭建 5、切换…