当前位置: 首页 > news >正文

php空间放多个网站/关键词优化报价怎么样

php空间放多个网站,关键词优化报价怎么样,哪个网站做餐饮推广最好,b站视频可以离线观看吗核心机制 第二十章 异常和状态管理 什么是异常:异常指成员没有完成它的名称所宣称的行动;异常是程序运行过程中用来表示错误并处理的机制,错误可以是更广义的,包括程序中未捕获的问题或逻辑缺陷。异常处理机制(try-c…

核心机制

第二十章 异常和状态管理

  1. 什么是异常:异常指成员没有完成它的名称所宣称的行动;异常是程序运行过程中用来表示错误并处理的机制,错误可以是更广义的,包括程序中未捕获的问题或逻辑缺陷。
  2. 异常处理机制(try-catch-finally结构)
    1. try块:放入可能引发异常的代码(需要得体的进行恢复和/或清理的代码);一个try块至少要有一个关联的catch块或finally块;一个try块中放多少代码取决于状态管理,如果一个try块中执行多个可能抛出同一个异常类型的操作,但不同的操作有不同的异常恢复措施,就应该每个操作放在自己的try块中;尽量将 try块的范围缩小到只包含可能会引发异常的代码。
    2. catch块:负责异常恢复的代码;如果try块中的代码没有抛出异常就不会执行catch块
    3. catch关键字后的圆括号中的表达式称为捕捉类型,捕捉类型必须是System.Exception或它的派生类型;CLR自上而下搜索匹配的catch块,所以较具体的异常应放在顶部(如果放反,编译器会因无法抵达报错)
    4. try块中的代码抛出异常时,CLR搜索类型与抛出的异常相同的catch块,如同没有则去调用栈更高一层搜索,如果到了调用栈的顶部还是没有,则抛出未处理的异常
    5. 一旦CLR找到匹配的catch块,就会执行内层所有finally块中的代码:CLR 会按照调用栈逐步寻找匹配的catch块,寻找过程中每次离开一个try块,都会执行该try块对应的finally块中的代码。内层finally块执行完毕后,匹配到异常的catch块中的代码才会开始执行,该块的finally还要等这个catch块执行完毕才会执行
    6. 在catch块的末尾,我们可以选择:
      1. 重新抛出相同的异常
      2. 抛出一个不同的异常
      3. 从catch块退出(进入finally)
    7. C#允许在捕捉类型后指定一个变量,catch块的代码可以引用这个变量来访问异常的具体信息(如stack trace);这个变量可以修改,但最好把它当作只读的
    8. finally块:保证会执行的代码,一般用于资源清理
    9. finally块不是必须的,但只能出现一个且必须在所有catch块之后;执行完finally后,会执行紧跟finally之后的语句
  3. CLR允许抛出任何类型的实例,但CLS规定必须能抛出和捕捉派生自System.Exception类型的异常
  4. 访问Exception的StackTrace属性实际会调用CLR中的代码,初始化Exception对象时,StackTrace被初始化为null;一个异常抛出时,CLR记录抛出的位置(throw指令),一个catch块捕捉到异常时,CLR记录捕捉位置,访问StackTrace属性会创建一个字符串指出从抛出位置到捕捉位置的所有方法
  5. 当一个异常被抛出或者重新抛出时,Windows 会处理异常的堆栈起点:如果一个异常成为未处理的异常,那么向windows error reporting报告的栈位置就是最后一次抛出或重新抛出的位置(而不是异常实际发生的地方)
  6. 要获取完整的堆栈跟踪,需要用到StackTrace类,可以使用Exception对象构造
  7. 实现自己的方法时抛出异常,要考虑:应该选择一个有意义的Exception派生类型,不要抛出Exception类型;向异常类型的构造器传入详细说明为什么无法完成任务的字符串消息
  8. 定义自己的异常类,要注意:定义浅而宽的异常类型层次结构;类型应该可序列化
  9. 错误不经常发生,开发人员不去追求完全可靠的代码,牺牲一定的可靠性来换取程序员开发效率的提升
  10. 如果确定状态已经损坏到无法修复的程度,应该销毁所有损坏的状态,防止它造成更多的伤害,然后重启程序,重新初始化到良好的状态
  11. 如果整个进程需要终止,应该使用Environment.FailFast方法,这个方法终止进程时,不会运行任何活动的try/finally块或Finalize方法,它将消息字符串和可选的异常写入windows application事件日志、生成Windows错误报告、创建内存转储(dump),然后终止当前进程
  12. 设计规范(类库开发人员不要想当然地决定错误情形,应该让调用者自己决定)
    1. 使用finally块清理已成功的操作,再返回至调用者或者执行之后的代码;利用finally块显式释放对象以避免资源泄露;使用lock、using、foreach、析构器时,编译器会自动生成try/finally块
    2. 不要什么都捕捉(不要捕捉了System.Exception后不再抛出),否则应用程序不知道出了什么错,还会继续运行
    3. 一些可以预料的异常,可以得体地从异常中恢复并继续运行
    4. 发生不可恢复的异常时,回滚部分完成的操作
    5. 为隐藏实现细节,捕捉一个异常并重新抛出不同的异常(不利于调试,慎用)
  13. 异常抛出时,没有任何catch块匹配抛出的异常类型,就发生一个未处理的异常。进程中的任何线程有未处理的异常,都会终止进程,windows会向事件日志写一条记录。
  14. 异常处理是必须的,同时也是有代价的;频繁调用但频频失败的方法抛出异常所造成的性能损失可能是无法接受的;定义类型的成员时,应确保在一般使用情形中不会失败,只有当用户因抛出异常对性能不满意时才考虑添加一些TryXXX方法,帮助改善性能。(例Int32的Parse和TryParse方法)
  15. 约束执行区域(CER)用于在某些特殊场景下保证代码的执行具有更高的可靠性,即使在不可控的异常(如内存不足或线程被终止)发生时,也能尽可能确保特定的代码能够完整执行(普通的异常处理机制try-catch-finally在面对某些不可控异常时可能会失败,而 CER 提供了额外的安全性)。
    1. RuntimeHelpers.PrepareConstrainedRegions() 用于定义 CER 的起始点,通知 CLR 在进入 CER 前准备好所有资源(CER 中所有可能执行的代码都会在进入 CER 前完全 JIT 编译)。
    2. ReliabilityContractAttribute 用于标记方法的可靠性契约,声明某个方法在 CER 内部的行为
    3. 但是,编译器和CLR并不验证代码是否符合ReliabilityContractAttribute 作出的保证
  16. 代码协定(Code Contracts)用于定义代码的行为和约束条件,可以将前条件、后条件、对象不变性想象为方法签名的一部分。代码协定本质上是对代码逻辑的一个明确声明,这些声明可以在运行时检查,也可以在静态分析中验证。现在一般用断言(Assertions)进行条件验证。

相关文章:

25.02.04 《CLR via C#》 笔记 13

核心机制 第二十章 异常和状态管理 什么是异常:异常指成员没有完成它的名称所宣称的行动;异常是程序运行过程中用来表示错误并处理的机制,错误可以是更广义的,包括程序中未捕获的问题或逻辑缺陷。异常处理机制(try-c…...

git 项目的更新

更新项目 当自己的本地项目与 远程的github 的仓库已经建立远程连接时&#xff0c; 则直接按照下面的步骤&#xff0c; 将本地的项目代码更新到远程仓库。 # Stage the resolved file git add README.md <file1> <file2># To stage all changes: git add .# Comm…...

【Rust自学】17.3. 实现面向对象的设计模式

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 17.3.1. 状态模式 状态模式(state pattern) 是一种面向对象设计模式&#xff0c;指的是一个值拥有的内部状态由数个状态对象&#xff08…...

51c视觉~CV~合集10

我自己的原文哦~ https://blog.51cto.com/whaosoft/13241694 一、CV创建自定义图像滤镜 热图滤镜 这组滤镜提供了各种不同的艺术和风格化光学图像捕捉方法。例如&#xff0c;热滤镜会将图像转换为“热图”&#xff0c;而卡通滤镜则提供生动的图像&#xff0c;这些图像看起来…...

如何安全地管理Spring Boot项目中的敏感配置信息

在开发Spring Boot应用时&#xff0c;我们经常需要处理一些敏感的配置信息&#xff0c;比如数据库密码、API密钥等。以下是一个最佳实践方案&#xff1a; 1. 创建配置文件 application.yml&#xff08;版本控制&#xff09; spring:datasource:url: ${MYSQL_URL:jdbc:mysql…...

Docker小游戏 | 使用Docker部署2048网页小游戏

Docker小游戏 | 使用Docker部署2048网页小游戏 前言项目介绍项目简介项目预览二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署2048网页小游戏下载镜像创建容器检查容器状态检查服务端口安全设置四、访问2048网页小游戏五、总结前言 在当今快速发展的技术世…...

RabbitMQ深度探索:消息幂等性问题

RabbitMQ 消息自动重试机制&#xff1a; 让我们消费者处理我们业务代码的时候&#xff0c;如果抛出异常的情况下&#xff0c;在这时候 MQ 会自动触发重试机制&#xff0c;默认的情况下 RabbitMQ 时无限次数的重试需要认为指定重试次数限制问题 在什么情况下消费者实现重试策略…...

Linux网络 | 进入数据链路层,学习相关协议与概念

前言&#xff1a;本节内容进入博主讲解的网络层级中的最后一层&#xff1a;数据链路层。 首先博主还是会线代友友们认识一下数据链路层的报文。 然后会带大家重新理解一些概念&#xff0c;比如局域网交换机等等。然后就是ARP协议。 讲完这些&#xff0c; 本节任务就算结束。 那…...

芝法酱学习笔记(2.6)——flink-cdc监听mysql binlog并同步数据至elastic-search和更新redis缓存

一、需求背景 在有的项目中&#xff0c;尤其是进销存类的saas软件&#xff0c;一开始为了快速把产品做出来&#xff0c;并没有考虑缓存问题。而这类软件&#xff0c;有着复杂的业务逻辑。如果想在原先的代码中&#xff0c;添加redis缓存&#xff0c;改动面将非常大&#xff0c…...

JavaScript系列(58)--性能监控系统详解

JavaScript性能监控系统详解 &#x1f4ca; 今天&#xff0c;让我们深入探讨JavaScript的性能监控系统。性能监控对于保证应用的稳定性和用户体验至关重要。 性能监控基础概念 &#x1f31f; &#x1f4a1; 小知识&#xff1a;JavaScript性能监控是指通过收集和分析各种性能指…...

GESP2023年12月认证C++六级( 第三部分编程题(1)闯关游戏)

参考程序代码&#xff1a; #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <string> #include <map> #include <iostream> #include <cmath> using namespace std;const int N 10…...

git 新项目

新项目git 新建的项目如何进行git 配置git git config --global user.name "cc" git config --global user.email ccexample.com配置远程仓库路径 // 添加 git remote add origin http://gogs/cc/mc.git //如果配错了&#xff0c;删除 git remote remove origin初…...

系统URL整合系列视频一(需求方案)

视频 系统URL整合系列视频一&#xff08;需求方案&#xff09; 视频介绍 &#xff08;全国&#xff09;某大型分布式系统Web资源URL整合需求实现方案讲解。当今社会各行各业对软件系统的web资源访问权限控制越来越严格&#xff0c;控制粒度也越来越细。安全级别提高的同时也增…...

Vue.js 使用组件库构建 UI

Vue.js 使用组件库构建 UI 在 Vue.js 项目中&#xff0c;构建漂亮又高效的用户界面&#xff08;UI&#xff09;是很重要的一环。组件库就是你开发 UI 的好帮手&#xff0c;它可以大大提高开发效率&#xff0c;减少重复工作&#xff0c;还能让你的项目更具一致性和专业感。今天…...

计算图 Compute Graph 和自动求导 Autograd | PyTorch 深度学习实战

前一篇文章&#xff0c;Tensor 基本操作5 device 管理&#xff0c;使用 GPU 设备 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started PyTorch 计算图和 Autograd 微积分之于机器学习Computational Graphs 计算图Autograd…...

51单片机入门_05_LED闪烁(常用的延时方法:软件延时、定时器延时;while循环;unsigned char 可以表示的数字是0~255)

本篇介绍编程实现LED灯闪烁&#xff0c;需要学到一些新的C语言知识。由于单片机执行的速度是非常快的&#xff0c;如果不进行延时的话&#xff0c;人眼是无法识别(停留时间要大于20ms)出LED灯是否在闪烁所以需要学习如何实现软件延时。另外IO口与一个字节位的数据对应关系。 文…...

如何获取sql数据中时间的月份、年份(类型为date)

可用自带的函数month来实现 如&#xff1a; 创建表及插入数据&#xff1a; create table test (id int,begindate datetime) insert into test values (1,2015-01-01) insert into test values (2,2015-02-01) 执行sql语句,获取月份&#xff1a; select MONTH(begindate)…...

【单层神经网络】softmax回归的从零开始实现(图像分类)

softmax回归 该回归分析为后续的多层感知机做铺垫 基本概念 softmax回归用于离散模型预测&#xff08;分类问题&#xff0c;含标签&#xff09; softmax运算本质上是对网络的多个输出进行了归一化&#xff0c;使结果有一个统一的判断标准&#xff0c;不必纠结为什么要这么算…...

使用开源项目:pdf2docx,让PDF转换为Word

目录 1.安装python 2.安装 pdf2docx 3.使用 pdf2docx 转换 PDF 到 Word pdf2docx&#xff1a;GitCode - 全球开发者的开源社区,开源代码托管平台 环境&#xff1a;windows电脑 1.安装python Download Python | Python.org 最好下载3.8以上的版本 安装时记得选择上&#…...

保姆级教程Docker部署KRaft模式的Kafka官方镜像

目录 一、安装Docker及可视化工具 二、单节点部署 1、创建挂载目录 2、运行Kafka容器 3、Compose运行Kafka容器 4、查看Kafka运行状态 三、集群部署 四、部署可视化工具 1、创建挂载目录 2、运行Kafka-ui容器 3、Compose运行Kafka-ui容器 4、查看Kafka-ui运行状态 …...

ChatGPT提问技巧:行业热门应用提示词案例--咨询法律知识

ChatGPT除了可以协助办公&#xff0c;写作文案和生成短视频脚本外&#xff0c;和还可以做为一个法律工具&#xff0c;当用户面临一些法律知识盲点时&#xff0c;可以向ChatGPT咨询获得解答。赋予ChatGPT专家的身份&#xff0c;用户能够得到较为满意的解答。 1.咨询法律知识 举…...

openRv1126 AI算法部署实战之——Tensorflow模型部署实战

在RV1126开发板上部署Tensorflow算法&#xff0c;实时目标检测RTSP传输。视频演示地址 rv1126 yolov5 实时目标检测 rtsp传输_哔哩哔哩_bilibili ​ 一、准备工作 从官网下载tensorflow模型和数据集 手动在线下载&#xff1a; https://github.com/tensorflow/models/b…...

STM32 TIM定时器配置

TIM简介 TIM&#xff08;Timer&#xff09;定时器 定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能&#xff…...

51单片机 05 矩阵键盘

嘻嘻&#xff0c;LCD在RC板子上可以勉强装上&#xff0c;会有一点歪。 一、矩阵键盘 在键盘中按键数量较多时&#xff0c;为了减少I/O口的占用&#xff0c;通常将按键排列成矩阵形式&#xff1b;采用逐行或逐列的“扫描”&#xff0c;就可以读出任何位置按键的状态。&#xf…...

SSRF 漏洞利用 Redis 实战全解析:原理、攻击与防范

目录 前言 SSRF 漏洞深度剖析 Redis&#xff1a;强大的内存数据库 Redis 产生漏洞的原因 SSRF 漏洞利用 Redis 实战步骤 准备环境 下载安装 Redis 配置漏洞环境 启动 Redis 攻击机远程连接 Redis 利用 Redis 写 Webshell 防范措施 前言 在网络安全领域&#xff0…...

kubernetes学习-配置管理(九)

一、ConfigMap &#xff08;1&#xff09;通过指定目录&#xff0c;创建configmap # 创建一个config目录 [rootk8s-master k8s]# mkdir config[rootk8s-master k8s]# cd config/ [rootk8s-master config]# mkdir test [rootk8s-master config]# cd test [rootk8s-master test…...

python 语音识别

目录 一、语音识别 二、代码实践 2.1 使用vosk三方库 2.2 使用SpeechRecognition 2.3 使用Whisper 一、语音识别 今天识别了别人做的这个app,觉得虽然是个日记app 但是用来学英语也挺好的,能进行语音识别,然后矫正语法,自己说的时候 ,实在不知道怎么说可以先乱说,然…...

一文速览DeepSeek-R1的本地部署——可联网、可实现本地知识库问答:包括671B满血版和各个蒸馏版的部署

前言 自从deepseek R1发布之后「详见《一文速览DeepSeek R1&#xff1a;如何通过纯RL训练大模型的推理能力以比肩甚至超越OpenAI o1(含Kimi K1.5的解读)》」&#xff0c;deepseek便爆火 爆火以后便应了“人红是非多”那句话&#xff0c;不但遭受各种大规模攻击&#xff0c;即便…...

[mmdetection]fast-rcnn模型训练自己的数据集的详细教程

本篇博客是由本人亲自调试成功后的学习笔记。使用了mmdetection项目包进行fast-rcnn模型的训练&#xff0c;数据集是自制图像数据。废话不多说&#xff0c;下面进入训练步骤教程。 注&#xff1a;本人使用linux服务器进行展示&#xff0c;Windows环境大差不差。另外&#xff0…...

1. Kubernetes组成及常用命令

Pods(k8s最小操作单元)ReplicaSet & Label(k8s副本集和标签)Deployments(声明式配置)Services(服务)k8s常用命令Kubernetes(简称K8s)是一个开源的容器编排系统,用于自动化应用程序的部署、扩展和管理。自2014年发布以来,K8s迅速成为容器编排领域的行业标准,被…...