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

这种情况就是程序员们未雨绸缪写出来的异常解决方式之一,但我们要知道的是 错误类型是分很多种的
制作不易还请各位一键三连哦!
文章目录
- 前言
- C#错误类型
- 异常概述
- 什么是异常?
- 怎么来处理异常?
- 不处理后果
- try catch finally结构
- try catch 原理
- 异常对象的属性
- 常见异常类型
- throw 关键字
- 总结
C#错误类型
- 语法错误:代码在程序编译期间,编译器报出的错误,即为语法错误
- 异常:代码在运行期间,可能使得程序非正常终止的错误,叫做异常
- 逻辑错误:程序可以正常运行,但是和预想的结果不同(这种bug太折磨人了看不见摸不到代码量上来的时候 得一点点去查)
异常概述
什么是异常?
异常就是程序中的运行时错误,当出现异常时,系统会捕获这个错误并抛出一个异常
怎么来处理异常?
- 在c#中,提供了异常处理结构(try catch finally)
- 用户可以根据需要编写自己的异常类和抛出异常
不处理后果
很简单 如果异常不经过处理 很可能会逼停程序 使程序默认终止
那么 说了这么多 我们来实际操作一下怎么处理异常:
try catch finally结构
try{
// 可能会发生异常的代码.... }
catch(异常类型 变量){
// 异常处理代码... }
catch(异常类型){
// 异常处理代码... }
... catch{
// 异常处理代码... }
finally{
// 总会最后执行的代码... }
那么 在程序中具体是什么样的呢 我们实践一下:

你看 我们这就很简单的自己捕捉到了异常 并且处理了它 倘若我们把这个异常比作是一个别的呢 比如网络断开链接 充值失败等等 是不是应该告诉用户 应该做什么而不是逼停自己的游戏程序
那么 这个原理是什么呢?
try catch 原理
• 我们把有可能发生异常的代码放在try语句块中
• 如果发生异常,则根据异常类型来与后面的多个catch后的类型进行比较
• 如果相同,则执行catch语句块中的内容
• 如子类的异常都不相同,则会执行父类catch{…}内容
• 执行一个catch结构后就不会在执行其他catch
• 最后执行finally。
异常对象的属性
- Message:异常的描述信息
- Stack Trace:描述异常发生的位置 (当catch捕捉到一个异常对象,可打印其异常信息 或者直接定位到其位置也可以方便我们查找)
常见异常类型

那么 我们既然可以捕捉并且处理异常 是不是也可以自己抛出一个异常等待别的地方处理呢? 当然可以啦 下面我们介绍抛出异常:
throw 关键字
我们可以自己尝试产生一个异常
- 创建一个异常示例
- 用Throw将其抛出
- 可以在调用层使用try catch处理
我们可以自己实验一下:
创建两个类 Class1,Class2 代码如下:


其实在之后我们写代码时 try catch和if一样 可以有很多的catch 我们可能会自己继承异常类 然后自己封装一个可能会出现的各种异常的类 然后在别的类里调用他们 而不是每一个地方都要去自己捕捉异常处理 可能会统一处理很多异常。

总结
异常的处理其实一般会在框架中封装广泛 大家以后学习会慢慢了解到的 基本的c#基础知识大家马上就要了解完了 后面还有两三章就会讲解完毕 然后开始unity的讲解使用 同学们可以多多做c#的练习题巩固一下之前的知识,下期见。
相关文章:
Unity开发之C#基础-异常处理(Try Catch)
前言 其实本来这章应该将栈和队列的 但是后来想想 栈和队列在实际应用很少跟多的是大家了解一下栈和队列的基本常识比如先进先出的是谁后进先出的是谁这种 csdn有很多介绍栈和队列的文章 我觉得都比我理解深刻所以大家可以去搜索参照一下 今天我们继续往下讲解 如何自己主动的…...
Epoxy:跨不同数据存储的 ACID 事务
Epoxy 利用 Postgres 事务数据库作为主数据库/协调数据库,并扩展多版本并发控制 (MVCC) 以实现跨数据存储隔离。它通过乐观并发控制 (OCC) 和两阶段提交 (2PC) 协议提供隔离性以及原子性和持久性。 环氧树脂被用作五种不同数据存储的接口层:Postgres, M…...
鸿蒙:从0到“Hello Harmony”
效果展示 一.概述 明年华为鸿蒙就不再兼容Android生态了,作为拥有7亿终端用户的华为,建立自己的生态也是理所当然。 所以对HarmonyOS的研究也是众多开发者绕不开的坎了。 今天这篇博文主要实现一个“Hello Harmony!”的Demo。 二.官方链接…...
istio安装文档
1、重装命令 istioctl manifest generate --set profiledemo | kubectl delete --ignore-not-foundtrue -f - 2、下载 参考:02、istio部署到k8s中 - 简书 (jianshu.com) 参考 Istio / 入门 curl -L https://istio.io/downloadIstio | ISTIO_VERSION1.20.0 TAR…...
修改CentOS默认mail发件人名称
修改CentOS默认mail发件人名称 在CentOS中,可以通过修改邮件发送配置文件来修改默认的邮件发件人名称。以下是一些步骤,您可以根据您的实际情况进行修改: 打开终端或SSH连接到CentOS服务器。使用文本编辑器(如vi或nano࿰…...
Trigger替换Demo
maven工程 pom依赖 <dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.2.1</version> </dependency> import org.quartz.Job; import org.quartz.JobExecutionContext; imp…...
iApp祁天社区UI成品源码 功能齐全的社区应用
iApp祁天社区UI成品源码是一个非常实用的资源,提供了完整的源代码,可以帮助您快速搭建一个功能齐全的社区应用。 这个源码具有丰富的UI设计,经过精心调整和优化,确保用户体验流畅而舒适。它不仅具备基本的社区功能,如…...
python基于BAC0库进行bacnet IP的读写
python基于BAC0库进行bacnet IP的读写 实现内容:基于BAC0库实现对一台虚拟bacnet设备的扫描、点位读取和点位数据写入。 开发环境 python3.9 pip下载BAC0库 功能实现 # 扫描设备myIPAddr 192.168.90.81/24bacnet BAC0.lite(ipmyIPAddr)devices bacnet.whois(…...
CSDN每日一题学习训练——Python版(简化路径,不同的二叉搜索树)
版本说明 当前版本号[20231116]。 版本修改说明20231116初版 目录 文章目录 版本说明目录简化路径题目解题思路代码思路参考代码 不同的二叉搜索树题目解题思路代码思路参考代码 简化路径 题目 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路…...
milvus集合管理
一、创建集合 集合由一个或多个分区组成。在创建新集合时,Milvus会创建一个默认分区_default 1.准备模式 需要创建的集合必须包含一个主键字段和一个向量字段。INT64和String是主键字段支持的数据类型。 首先,准备必要的参数,包括字段模式、…...
基于SSM的教学管理系统设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
【第2章 Node.js基础】2.7 Node.js 的流(一)可写流
🌈可写流 🚀什么是可写流 可写流是对数据被写入的目的地的一种抽象。 所有可写流都实现了 stream.Writable类定义的接口。 可写流的例子包括,也都是实现了可写流接口的双工流 客户端的 HTTP 请求、服务器的HTTP 响应、fs 的写入流、zlib…...
【kerberos】使用 curl 访问受 Kerberos HTTP SPNEGO 保护的 URL
前言: 大数据集群集成 Kerberos 后,很多 WEBUI 打开都会提示输入用户名和密码。由于我想获取 flink 任务的详情,且KNOX 并不支持Flink api,查看KNOX 直接的列表:https://docs.cloudera.com/cdp-private-cloud-base/7.…...
基于SSM的智慧养老平台设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
图像生成colab集合
不过colab会做检测,一般文生图算法是基本很难跑起来的。 https://github.com/camenduruhttps://github.com/camenduru这哥们有很多colab。 1.stable-diffusion-webui https://colab.research.google.com/drive/1Iy-xW9t1-OQWhb0hNxueGij8phCyluOh#scrollTow3KNZ-…...
SpringBoot整合Quartz示例
数据表 加不加无所谓,如果需要重启服务器后重新执行所有JOB就把sql加上 如果不加表 将application.properties中的quartz数据库配置去掉 自己执行自己的逻辑来就好,大不了每次启动之后重新加载自己的逻辑 链接:https://pan.baidu.com/s/1KqOPYMfI4eHcEMxt5Bmt…...
物联网AI MicroPython学习之语法 I2C总线
学物联网,来万物简单IoT物联网!! I2C 介绍 模块功能: I2C Master设备驱动 接口说明 I2C - 构建硬件I2C对象 函数原型:I2C(id, scl, sda, freq)参数说明: 参数类型必选参数?说明idintYI2C外设ÿ…...
RocketMQ的适用场景有哪些?
程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…...
ubuntu启动转圈,无法进入登录界面
安装卸载搜狗拼音输入法相关东西后出现启动转圈问题 当前使用的是lightdm,按网上说去切换成gdm3 (1)要在刚进入系统没显示圈圈和ubuntu时长按shift进入gurb。 (2)选择Ubuntu高级选项,enter (3)…...
MATLAB 机械臂逆运动学进行轨迹控制建模
系列文章目录 文章目录 系列文章目录前言一、模型概览1.1 Target Pose Generation 目标姿势生成1.2 Inverse Kinematics 逆运动学1.3 Manipulator Dynamics 机械手动力学1.4 Pose Measurement 姿势测量 二、机械手定义三、生成航点四、模型设置五、模拟机械手运动六、将结果可视…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
