核心编程 第1章 对程序错误的处理 (笔记)

《Windows核心编程》读书笔记二十四章 异常处理程序与软件异常 第24章 异常处理程序与软件异常 本章内容 24.1 通过实例理解异常过滤程序和异常处理程序 24.2 EXCEPTION_EXECUTE_HANDLER 24.3 EXCEPTION_CONTINUE_EXECUTION 24.4 EXCEPTION_CONTINUE_SEARCH 24.5 GetExceptionCode 24.6 GetExceptionInforma 阅读详情

要点:

a. 通过API GetLastError()可获取程序最后错误码,此函数返回线程的32位错误码。

b.在调试时,监控线程的最后错误代码非常有用。通过选定Watch窗口中的一行,并键入“@err,hr”,

    可以方便始终显示线程最后的错误代码的号码和 此错误的英文描述。如下图所示:

  

c. VS 小的实用程序Error Lookup,可以使用Error Lookup,可以将错误代码的号码转换成相应文本描述。

  

d.FormatMessage函数可以将错误代码转换成它的文本描述。

《Windows核心编程》读书笔记 这篇笔记是我在读《Windows核心编程》第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入,但应该是合理的。开头几章由于追求简洁,往往是很多单独的字句,后面的内容更为连贯。   海量细节。     第1章    错误处理 1.         GetLastError返回的是最后的错误码,即更 阅读详情

相关推荐

《Windows核心编程》读书笔记二十六章 错误报告与应用程序恢复

第二十六章 错误报告与应用程序恢复 本章内容 26.1 Windows错误报告控制台 26.2 可编程的Windows错误报告 26.3 对进程中所有的问题报告进行定制 26.4 问题报告的创建与定制 26.5 应用程序自动重启与恢复 本章介绍Windows的错误报告以及其接口API。WER API可以了解程序运行失败的深层原因,更好发现和解决缺陷。 26.1 Wi

sesiria的博客 1664

第01章 对程序错误的处理

       在开始介绍 Microsoft Windows 的特性之前,必须首先了解 Wi n d o w s的各个函数是如何进行错误处理的。        当调用一个Wi n d o w s函数时,它首先要检验传递给它的的各个参数的有效性,然后再设法执行任务。如果传递了一个无效参数,或者由于某种原因无法执行这项操作,那么操作系统就会返回一个值,指明该函数在某种程度上运行失败了。表 1 - 1列...

心情第一 493

《Python核心编程 》笔记-快速入门

春节终于over了,回归充实的学习研究生活。打开久违的优快云博客,看到官方推送的 『博客Markdown编辑器上线啦』,让我顿时有了写作的欲望,真是程序员的福利。之前阅读各种文章书籍,都是用MarkDownPad做的笔记,喜欢以及习惯于MarkDown简洁的语法。总之各种方便。为了试试效果,将以前阅读《Python核心编程》的手记整理发上来,也当温习一遍。第二章 快速入门 print语句中使用字符

wepon的专栏 2825

第10章 错误处理

Rust错误处理机制解析 本文深入探讨了Rust语言的错误处理系统,包括不可恢复错误与可恢复错误的处理策略。对于不可恢复错误,介绍了panic!宏的使用场景、自定义panic处理方法和捕获panic的技巧。针对可恢复错误,详细讲解了Result类型的基础用法、多种处理方式(match/unwrap/expect/?)以及错误传播的实践方法。文章还分析了Rust错误处理的设计哲学,包括编译时强制检查、显式错误处理和类型安全等特性,通过具体代码示例展示了错误处理的最佳实践。 关键词:Rust、错误处理、pani

百锦再的博客 1927

Intel MKL库常用模块的C语言实现

文章目录1. 随机数生成1.1 等概率的01分布 viRngUniform1.2 (复)高斯分布 vsRngGaussian2. 向量-向量运算2.1 向量数乘与加法 cblas_caxpby2.2 向量内积 cblas_cdotu_sub2.3 向量范数 cblas_scnrm23. 矩阵-向量运算3.1 矩阵存储方案3.2 矩阵-向量乘法 cblas_cgemv4. 矩阵-矩阵运算4.1 矩阵...

月半 月半的博客 4652

CS算法实战:用MATLAB从零实现SAR点目标成像(附完整代码)

本文详细介绍了如何使用MATLAB从零实现SAR点目标CS成像算法,涵盖Chirp Scaling(CS)算法的核心理论、距离徙动校正(RCMC)和方位压缩等关键步骤。通过完整的代码示例和实战技巧,帮助读者掌握SAR成像处理算法,提升遥感图像处理能力。

weixin_29211309的博客 179

[笔记]Windows核心编程《一》错误处理、字符编码

windows核心编程1.vs选中函数 按下f1 可进入msdn网页 函数具体详情2.vsF5运行,Cirl+F5 无调试运行,F7编译,3.工具栏-》错误查找 工具可以查找错误码对应的错误含义。

二次元怪兽的博客 1619

飞腾X100芯片GPU状态查询

本文档对在linux系统下查看X100芯片GPU状态信息进行说明,可以帮助大家了解芯片的实时工作状态。

乌拉大喵喵 2815

《Windows核心编程》读书笔记一 错误处理

第一章 错误处理 所有范例代码可以从 http://www.wintellect.com/books.aspx下载 (改网址已经不可用) 网盘:https://pan.baidu.com/s/1nv1HxxB  本章内容 定义自己的错误代码 ErrorShow实例程序 常见的Windows函数返回值的数据类型 VOID 这个函数不可能失败。只有极少

sesiria的博客 1094

稳定性性能系列之十五——系统稳定性监控体系建设:从指标到预警的完整方案

深入探讨Android系统稳定性监控体系的设计与实现,涵盖指标体系设计、数据采集方案、异常检测算法、预警响应机制,并提供完整的监控平台搭建实践。

Cheson的专栏 1358

针对中文CLIP模型训练失效的解决方案记录

解决了中文CLIP模型无法正确训练的问题

weixin_45906434的博客 1621

《代码整洁之道》第7章 错误处理 - 笔记

在某些系统中,查找某个 ID 的用户可能找不到,这是一个正常的操作结果(比如用户 ID 不存在),而不是一个程序错误。这个原则主要用在那些**“找不到”或者“为空”是一种常见且预期内的结果,而不是真正的错误或异常**的场景。它的唯一作用就是在不同的软件层次之间(比如从数据库层到服务层,或者从服务层到外部接口)传输数据。或抛出异常,返回一个实现了相同接口的“特殊情况对象”可能让代码更清晰。抛出异常时,不要只抛一个泛泛的异常类型 , 应该提供清晰的、有。的错误消息,并且如果捕获了下层抛出的异常,应该将其。

CoFFee________的博客 1014

别再乱拖了!Godot 4.x 场景编辑器的7个隐藏操作技巧(附快捷键清单)

本文揭示了Godot 4.x场景编辑器的7个隐藏操作技巧,包括智能对齐、轴心点应用、多节点批量操作等,帮助开发者提升游戏开发效率。特别介绍了坐标系切换和自定义快捷键等实用功能,适用于处理复杂场景和团队协作。

weixin_29534421的博客 361

windows核心编程第1章

错误处理 文章目录错误处理1、内容介绍(1)GetLastError函数(2)监视窗口(3)错误查找窗口2、ErrorShow示例程序 1、内容介绍 《Windows核心编程》开篇并没有直接告诉我们 Microsoft Windows提供的诸多特性,而是先告诉我们Windows API如何处理进行错误处理。 通常我们调用Windows API都会遇到调用失败的情况,但是如果知道Windows API返回的错误码以及对应的意思,将有助于我们理解函数为什么会调用失败。要查看具体是什么错误,需要调用GetLa

To Be Continue 682

全网最全的AItium Designer 16下载资源与安装步骤

Altium Designer 除了全面继承包括Protel 99SE、Protel DXP在内的先前一系列版本的功能和优点外,还增加了许多改进和很多高端功能。该平台拓宽了板级设计的传统界面,全面集成了FPGA设计功能和SOPC设计实现功能,从而允许工程设计人员能将系统设计中的FPGA与PCB设计及嵌入式设计集成在一起。...

WQ的博客 1万+

SAP Fiori Elements 扩展实战:UI 层扩展、OData 服务扩展、CDS 视图增强及全流程案例

UI 层扩展主要关注在不修改标准生成界面的基础上,自定义用户界面元素和交互逻辑。典型需求包括:在现有 Fiori Elements 界面上添加新的字段(如表格列或表单项)、增加自定义按钮并绑定操作、以及通过控制器扩展加入事件处理等。无论在 RAP 还是传统 BOPF 架构下,前端 UI 扩展通常采用 SAPUI5 提供的**扩展点(Extension Points)和控制器扩展(Controller Extension)**机制来安全地插入自定义代码。下面分别说明两种后端架构下 UI 扩展的实现方式。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 902

windows核心编程-第一章 对程序错误的处理

windows核心编程-第一章 对程序错误的处理

天使也掉毛 1740

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

《windows核心编程》第1章 错误处理

这是windows的API函数,函数是用来将错误编码转换成错误信息字符串的在UNICODE编码下被定义为FormatMessageW,我们常用FormatMessageWFormatMessageW 函数 (winbase.h) - Win32 apps | Microsoft Learn。

HuanBianCheng27的博客 580

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Windows核心编程第五版-对程序的错误处理

Windows核心编程第五版-对程序的错误处理-01节第1章 对程序错误的处理1.1 定义自己的错误代码 第1章 对程序错误的处理 了解Microsoft Windows 的特性之前,必须首先了解Windows的函数是如何进行错误处理的。 当调用一个Windows函数时,首先会检验参数的有效性,若参数异常,那么会返回一个值,来标识该函数在某种程度上运行失败了。 Windows函数检测到一个错误时,它会使用一个称为线程本地存储器的机制,将相应的错误代码号码与调用的线程关联起来,当函数使用发生错误时,会讲错误代

appily_qin的博客 225

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

《Windows核心编程》第1章 对程序错误的处理

当调用一个Windows函数时,它首先要检验传递给它的的各个参数的有效性,然后再设法执行任务。如果传递了一个无效参数,或者由于某种原因无法执行这项操作,那么操作系统就会返回一个值,指明该函数在某种程度上运行失败了。 一个Windows函数返回的错误代码对了解该函数为什么会运行失败常常很有用。MicroSoft公司编译了一个所有可能的错误代码的列表,并且为每个错误代码分配了一个32位的号码。 当一个Windows函数检测到一个错误时,它会使用一个称为线程本地存储器(thread-local storage

已关闭 838

Windows核心编程学习笔记(1)错误处理

在内部,当Windows函数检测到错误的发生时,会使用一种名为"线程本地存储区"的机制将相应的错误代码与"主调线程"(即发生调用该函数操作的线程)关联在一起,使不同的线程独立运行,不会出现互相干扰错误代码的情况。下面列举错误的三种表示: 1.一个消息ID(一个可在源代码直接使用的宏名,用于与GetLastError()返回值比较) 2.消息文本(描述错误内容的英文文本) 3.编号(个人理解为宏的具体值,在代码中最好不要直接出现,否则增加代码阅读理解的难度,不利于开发进行) 当函数发生各种不同的错误时,为了使

weixin_45802197的博客 264

Mysql笔记-错误条件\处理程序

使用:定义错误条件(变量),指向SQLSTATE,Mysql错误码,或者自定义条件名,便于后面处理程序使用。作用域:在 MySQL 中,条件通过语句定义,​必须在BEGIN…END块的最开始处声明​(位于所有可执行语句之前),作用域仅限于当前块及其子块。#定义条件#定义处理程序--辅助这看怎么用,下面细讲-- 方法1:直接绑定MySQL错误码-- 方法2:绑定数值错误码-- 方法3:定义业务级条件​SQLSTATE​:遵循 ANSI SQL 标准,跨数据库兼容(如42S02。

firethehome666的博客 1028

Windows核心编程笔记——(1)错误处理

Windows函数调用失败时返回的值是和函数返回值的数据类型是有关的 数据类型 函数调用失败(除传参错误,程序员书写错误等)返回的值 VOID 一般不会失败 BOOL 函数失败返回值为0,否则返回-个非0值,稳妥的做法为判断值是否为FALSE PVOID 调用失败返回NULL,否则返回一个数据块的内存地址 HANDLE 函数失败返回NULL;否则,返回-个可操作的对象,...

正在探索 Java 海 329

python核心编程二十章例题asvcgi.py中的错误与修改

在python核心编程例题20.8中,按照作者代码是无法正常运行的,需要修改一下代码。主要是15行修改一下,48-51行添加四段代码。修改后代码如下:#!/usr/bin/env python # -*- coding:utf-8 from cgi import FieldStorage from os import environ from cStringIO import StringIO

天行健 661

Windows核心编程第一章.错误处理

Windows核心编程第一章,错误处理. 一丶错误处理 1.核心编程学习总结 不管是做逆向,开始做开发.在Windows下.你都需要看一下核心编程这本书.这本书确实写得很好.所以自己在学习这本书的同时,也把自己所学的知识进行 总结,以及巩固. 2.常见的Windows函数返回类型总结 数据类型 作用 VOID 如果是Void表示函数不可能失败.极少数windows函数会返回void BOOL...

weixin_30480075的博客 208

《Windows核心编程》读书笔记二十三章 终止处理程序

第二十三章 终止处理程序 本章内容 通过实例理解终止处理程序 VC++支持SEH(Structured exception handling)来使得开发代码过程能够把代码和错误处理的逻辑分离开来。 SEH是编译器在编译代码过程中加入了特殊的处理代码,报过SEH的数据结构和操作系统相关的代码。 SEH实际上包含两方面的功能:终止处理(termination

sesiria的博客 567
上一篇: 开源代码中看到的一个使用方便的宏定义
下一篇: VC++ 动态链接库 (DLL) 编程
Arcai1024
博客等级 码龄14年 20粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值