C#中级教程学习笔记001-调试和错误处理

QT 异常处理 try...catch pro文件添加: win* { QMAKE_CXXFLAGS_EXCEPTIONS_ON = /EHa QMAKE_CXXFLAGS_STL_ON = /EHa } CONFIG += exception 文件中使用: QT_TRY { int i=0; int j=10/i; }QT_CATCH(...){ qDebug()<<"test"<<1; } 这样就可以接收到异常,并且程序不会崩溃。 阅读详情

目录

1. 调试和错误处理

1.1 .正常调试

1.2 中断调试

1.3 异常处理


1. 调试和错误处理

1.1 .正常调试

        正常调试,主要是指输出日志,根据打印的信息进行判断错误所在;

                1.在visual studio 中,主要通过Console.Write / Console.WriteLine 方法向控制台输出信息;

                2.在Unity中,主要通过 Debug.Log("") Debug.LogError("") Debug.LogWarn(""),向unity的Console窗口输出信息;

 

1.2 中断调试

1.2.1 断点

        断点是源代码中自动进入中断模式的一个标记,当遇到断点的时候,程序会进入中断模式。

        如何插入断点?

                1,右击代码行,选择breakpoint(断点) -> insert breakpoint(插入断点)。

                2,光标定位到代码行,选择菜单上的Debug(调试)->Toggle Breakpoint(切换断点)。

                3,光标定位到代码行,按下F9键,在此按下F9是取消断点。

                4,在需要添加断点的行首位置,直接单击,再次单击取消断点

1.2.2 断点窗口

        窗口 Breakpoints

        可以通过 (调试-窗口-断点),打开断点窗口,这个窗口显示了当前项目中添加了的所有的断点,我们可以在这里定位断点的位置,也可以去删除断点。

 

1.2.3 监视变量的内容

        在中断模式下查看变量值最简单的方式,就是把鼠标指向源代码中的变量名,此时会出现一个工具提示,显示该变量的信息。

        中断模式下的窗口(右下角),有三个选项卡:

                错误列表 -程序运行中发生的所有错误的列表。

                局部变量 -当前运行环境中所有的局部变量的值。

                监视 -监视某个变量的值的变化。

        在上面的几个窗口中不但可以观察变量值的变化,还可以直接去修改变量中存储的值

1.2.4 调用堆栈和即时窗口

        在中断模式下,可以在右下角看到调用堆栈和即时窗口。

        在调用堆栈窗口:我们可以观察到当前代码执行到哪一行了,并且可以看到这个代码的是被什么语句调用的。

        即时窗口:我们可以在这里输入一些命令,查看变量的值,修改变量的值,可以输入表达式查看结果。

1.2.5 单步执行代码

        在中断模式下我们可以单步执行代码,单步执行带有有两种 逐过程和逐语句,他们两个都是一条语句一条语句的执行,区别在于 逐过程 遇到函数,不会进入函数内部,而把函数当成一条语句去执行。

1.2.6 Example: 断点

 

1.3 异常处理

        有时,我们知道可能会有错误发生,但不能100%的肯定他们不会发生,此时最好能预料到错误的发生,编写足够健壮的代码以处理这些错误,而不必中断程序的执行。

        异常:是在运行期间代码中产生的错误。

        示例:

                int[] myArray = {1,2,3,4};

                int myEle = myArray[4]; //数组下标越界

                运行到这里的时候,会出现异常,这个异常的定义已经在CLR中定义好了。如果我们不去处理这个异常,那么当异常发生的时候,程序会终止掉,然后异常后面的代码都无法执行。

我们处理异常的语法结构如下(包含了三个关键字 try catch finally)

        try

        {

              ...

        }

        catch( <exceptionType> e )

        {

              ...

        }

        finally

        {

        }

        其中catch块可以有0或者多个,finally可以有0或者1个。

        但是如果没有catch块,必须有finally块,没有finally块,必须有catch块,catch块和finally块可以同时存在。

        try块包含了可能出现异常的代码(一条或者多条语句)。

        catch块用来捕捉异常,当代码发生异常,那么异常的类型和catch块中的类型一样的时候,就会执行该catch块,如果catch块的参数不写,表示发生任何异常都执行这个catch块。

        finally块包含了始终会执行的代码,不管有没有异常产生都会执行。

        两个案例:

                1. 处理刚刚的下标越界异常。

                2. 让用户输入两个数字,用户可能会出入非数字类型,处理该异常,如果出现该异常就让用户重新输入,输出这两个数字的和。

1.3.1 Example: 异常案例1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// 异常案例1

namespace Lesson_1_2
{
    class Program
    {
        static void Main(string[] args)
        {
            // example_1: 处理下标越界异常。
            try
            {
                int[] intArray = { 1, 2, 3, 4 };
                int myEle = intArray[4];
            }
            catch (IndexOutOfRangeException e)
            {
                Console.WriteLine("发生了异常:IndexOutOfRangeException = " + e.Message);
                Console.WriteLine("您访问数组的时候,下标越界了");
            }
            finally  // 不管有没有发生异常,finally都会执行
            {
                Console.WriteLine("这里是 finally 里面执行的代码");
            }
            Console.WriteLine("try..catch结束");  // 异常进行了处理,所以发生异常时可以继续执行后面的代码

            try
            {
                int[] intArray = { 1, 2, 3, 4 };
                int myEle = intArray[4];
            }
            catch (NullReferenceException e)  // 捕捉的异常不匹配,所以这个catch不会执行
            {
                Console.WriteLine("发生了异常:NullReferenceException = " + e.Message);
            }
            catch  // 这个 catch 会捕捉出现的任何异常
            {
                Console.WriteLine("catch 您访问数组的时候,下标越界了");
            }
            finally
            {
                Console.WriteLine("这里是 finally 里面执行的代码");
            }
            Console.WriteLine("try..catch结束");  // 异常进行了处理,所以发生异常时可以继续执行后面的代码


            Console.ReadKey();

        }
    }
}

1.3.2 Example: 异常案例2

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// 异常案例2

namespace Lesson_1_3
{
    class Program
    {
        static void Main(string[] args)
        {
            // example_2: 让用户输入两个数字,用户可能会出入非数字类型,处理该异常,如果出现该异常就让用户重新输入,输出这两个数字的和。
            int iNum1 = 0, iNum2 = 0, iSum = 0;
            Console.WriteLine("请输入第一个数字:");
            while (true)
            {
                try
                {
                    iNum1 = Convert.ToInt32(Console.ReadLine());  // try中如果语句发生异常,则不会再执行try中剩下的语句。
                    break;  // 没有发生异常,输入成功,终止循环
                }
                catch
                {
                    Console.WriteLine("您输入的不是一个整数,请重新输入一个数字:");
                }
            }
            Console.WriteLine("请输入第二个数字:");
            while (true)
            {
                try
                {
                    iNum2 = Convert.ToInt32(Console.ReadLine());  // try中如果语句发生异常,则不会再执行try中剩下的语句。
                    break;  // 没有发生异常,输入成功,终止循环
                }
                catch
                {
                    Console.WriteLine("您输入的不是一个整数,请重新输入一个数字:");
                }
            }
            iSum = iNum1 + iNum2;
            Console.WriteLine("输入的数字之和是 = " + iSum);

            Console.ReadKey();
        }
    }
}

 

C#中的调试和错误处理(unity) 错误 代码中难免存在错误,不论程序员多么优秀,程序总会出现问题,有些问题,比如变量名字写错,导致编译器无法编译(语法错误),有的时候我们的逻辑在某些方面有瑕疵,也会产生错误,这类错误成为语义错误(逻辑错误)。 我们接下来学习如何在程序出错之后,使用VS提供给我们的调试功能,找到错误的原因,修改代码。(调试)以及学习C#中的错误处理技术,对可能发生错误的地方采取预防措施,并编写弹性代码来处理可能会发... 阅读详情

相关推荐

C++/Qt中异常处理try-catch语句的使用方式及场景案例

然而,使用省略号来捕获异常是不推荐的,因为它会捕获所有类型的异常,包括标准异常和非标准异常,导致代码的可读性和调试能力降低。最佳实践是将具体的异常类型作为catch块的参数,以便更精确地处理不同类型的异常。如果在这些代码执行过程中发生了异常,程序会立即跳转到最近的catch块,并执行相应的异常处理代码。catch块中的参数是异常对象的引用,可以用来访问异常的信息。总之,try-catch语句适用于任何可能会抛出异常的场景,可以提供对异常情况的处理和恢复机制,保证程序的稳定性和可靠性。// 读取或写入文件。

有问题或资源连接有缺失的可以私信公众号新潮看世界获取 5714

C++异常

程序的错误大致可以分为三种,分别是语法错误、逻辑错误和运行时错误: 语法错误在编译和链接阶段就能发现,只有 100% 符合语法规则的代码才能生成可执行程序。语法错误是最容易发现、最容易定位、最容易排除的错误,程序员最不需要担心的就是这种错误。 逻辑错误是说我们编写的代码思路有问题,不能够达到最终的目标,这种错误可以通过调试来解决。 运行时错误是指程序在运行期间发生的错误,例如除数为 0、内存...

小白的逆袭 481

Qt基础之三十六:异常处理

本文将介绍如何在Qt中使用try...catch和调试dump文件来处理异常。Qt版本5.12.6。

草上爬的博客 1万+

Qt调试技巧之捕获异常(try-catch),实现自己的异常处理

然后使用try-catch来保护我们的程序。可以在catch(...)中使用。以上就是关于异常处理的分享,如果需要更精细,可以自定义多种异常处理。

m0_59770307的博客 6430

揭开C#并发与并行编程的神秘面纱:错误处理与调试的艺术

通过对C#并发与并行编程中常见错误类型的深入剖析,以及一系列实用的错误处理与调试方法的学习,相信读者们已经对如何构建高质量的并发应用程序有了更加清晰的认识。未来,随着计算机体系结构的不断发展和技术生态系统的持续演进,期待更多的创新理念和最佳实践涌现出来,共同推动软件开发领域向着更高层次迈进。以上便是关于C#并发与并行编程的错误处理与调试指南。从基础概念到具体实现,再到实战技巧分享,每一个环节都凝聚着智慧和技术的魅力。希望这篇文章能为您带来启发,如果您有任何想法或疑问,请随时留言交流!

墨夶的博客 1724

C# 实现 Modbus 通信全教程(支持 TCP 和 RTU,含完整错误处理)

环境准备:安装 NModbus4 库,明确设备参数(IP/串口、地址、数据类型);连接设备:TCP 用 TcpClient,RTU 用 SerialPort,注意超时和参数匹配;读写数据:根据数据类型调用对应方法(读保持寄存器用 ReadHoldingRegisters);错误处理:捕获连接、超时、协议等异常,针对性排查问题。掌握这些后,即可轻松实现与工业设备的 Modbus 通信,为上位机开发提供稳定的数据交互能力。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2051

C#中级教程(1)——解锁 C# 编程的调试与错误处理秘籍

在 C# 编程的世界里,代码出错是难以避免的事情。无论是初出茅庐的新手,还是经验丰富的编程高手,都可能会遇到各种各样的错误。这篇博客将围绕 C# 编程中的调试与错误处理展开,结合经典和最新的知识,为你提供全面的指导,帮助你编写出更加健壮、稳定的代码。

徽程22级的在读学生 1616

华为2021年天线工程师笔试题目回忆总结(持续更新)

1. 判定长线和短线 所谓长线是指传输线的几何长度和线上传输电磁波的波长的比值(即电长度)大于或接近于1。反之称为短线。是相对于波长而言的。 1000m的传输线,对于频率为50hz(即波长为6000km)的交流电来说,仍远小于波长,应视为短线。长线和短线的区别还在于:长线为分布参数电路,而短线是集总参数电路。 2. 判定传输线的容性和感性 传输线上的输入阻抗具有以下特点: 1/4波长变换性:感性负载与容性负载变换,开路与短路变换; 1/2波长重复性:相距1/2波长的整数倍的两个点输入阻抗都相等。1/4开路传

ludashi3的博客 9521

SIKI学习——C#中级教程_01调试和错误处理

1.错误 代码中难免存在错误,不论程序员多么优秀,程序总会出现问题,有些问题,比如变量名字写错,导致编译器无法编译(语法错误),有的时候我们的逻辑在某些方面有瑕疵,也会产生错误,这类错误称为语义错误(逻辑错误)。 我们接下来学习如何在程序出错之后,使用VS提供给我们的调试功能,找到错误的原因,修改代码。(调试) 以及学习C#中的错误处理技术,对可能发生错误的地方采取预防措施,并编写弹性代码来处理可...

qq_42983775的博客 322

基于rms包的限制性立方样条回归(RCS)R代码实现

RCS

2301_79584199的博客 2万+

3D高斯泼溅实战:如何用自采数据集训练出高质量3D模型(附COLMAP避坑指南)

本文详细介绍了使用自采数据集训练高质量3D高斯泼溅模型的完整实战流程。从数据采集规范、COLMAP稀疏重建的深度配置与避坑指南,到数据格式转换及3DGS训练调优策略,提供了针对自采数据的关键参数调整与问题排查方案,帮助读者高效构建专属3D场景。

g9h0i1的博客 970

C#调试和错误处理(1)

IDE中的调试方法 ;Ps.集成开发环境(IDE,Integrated Development Environment )C#中的错误处理技术。 非中断模式下,VS中的调试 (1)将调试信息输出到output窗口,相当与使用Eclipse时,把java代码的输出打印到控制台。      Debug.WriteLine(); // 仅用于Dubug模式      Tr

Elfits的博客 1919

Python爬虫实战:5分钟搞定东方财富网股票数据抓取(附完整代码)

本文详细介绍了如何利用Python爬虫技术,快速抓取东方财富网的实时股票数据。通过逆向分析其JSONP数据接口,构建了包含请求处理、数据清洗、分页调度及多格式存储的完整自动化采集系统,并提供了应对反爬策略与生产部署的进阶优化思路,附有可直接运行的完整代码。

weixin_29084231的博客 861

C# 调试和错误处理 《C#入门经典》

可以采用两种方式执行应用程序调试模式(F5)和非调试模式(Ctrl+F5)在VS中执行应用程序时,默认是调试模式VS允许在两种配置下生成应用程序调试(默认)和发布调试:调试程序包含应用程序的符号信息,符号信息意味着跟踪(例如)未编译代码中使用的变量名,这样它们就可以匹配已编译的机器码应用程序中现有的值。此类信息包含在.pdb文件中,这些文件位于计算机的Debug目录下。

qq_44160904的博客 1012

Palabos User Guide中文解读 | 第五章 | Palabos编程 (跳过了第四章Palabos-Java接口)

作者的话:本人在学习palabos时,发现国内中文资料甚少,恰好网上可以直接搜到palabos user guide这种英文资料,加之时间充裕,便打算开始翻译,翻了一节后发现这可能算侵权,就比较伤脑筋,突然想到自己写中文解读即可,便有了下面的博客。 Palabos User Guide Release 1.0 r1 Copyright © 2019 University of Geneva Jul...

Yulan Fang's notes. 2293

YOLO26改进策略【Neck】| CVPR2025 LCA轻量交叉注意力 跨层级双向引导 + 分层降噪增强,提升微小目标特征表达

简单相加、拼接融合无法建立深浅层双向约束关系,浅层微小目标易被深层背景覆盖,深层全局信息难以修正浅层噪声;普通单路自注意力仅单一层内建模依赖,缺少跨层级特征互引导机制,深浅特征信息割裂;标准多头跨注意力计算量大、参数量高,轻量化单模态检测/分割网络部署困难,无法区分前景目标与背景噪声。为此设计单模态轻量化交叉注意力LCA,构建浅层细节、深层语义双分支双向引导结构,轻量完成跨层级特征交互,同步降噪并强化单模态微小目标特征。

Limiiiing的博客 511

C#中级教程总结一

C#中级教程流水账 1.调试与错误处理 正常调试模式 Unity调试语句: Debug.log(""); Debug.LogError(""); ;Debug.LogWarn(""); VS调试语句: Console.write(); 中断调试模式 1.左键点击代码行的最左侧 窗口breakpoint 调试窗口断点 打开后,显示当前项目添加的所有断点,我们可以在这里定位位置,也可以删除断点。 监视...

weixin_43067910的博客 383

4、硬件工程师笔试面试知识器件篇——电阻(2025版本)

本文系统介绍了电阻的基础知识与应用。首先阐述了电阻的定义、工作原理及类型(固定/可变电阻),详细说明了常见电阻材料(碳膜、金属膜、线绕等)的特性与标记方法。重点分析了电阻在电路设计中的关键参数:功率计算需考虑1.5-2倍安全裕度,温度系数影响电路稳定性。文章还对比了不同封装形式(轴向/贴片/功率封装等)的适用场景,特别强调高功率电路需选择专用封装并做好散热设计。最后指出电路仿真可优化电阻选择,并列举了相关电子元件在设计中同样需要仿真验证。全文为硬件工程师提供了电阻选型的实用指导。

XU157303764的博客 5190

c#-中级篇知识合集-part01

c#-中级篇知识合集-part01001-调试和错误处理002-中断模式下的调试003-错误处理-异常处理004-异常处理-案例2005-面向对象编程-类006-类的定义和声明Program.csVector3.csVehicle.cs007-匿名类型008-值类型和引用类型-程序运行时的内存占用源码示意图009 面向对象编程-继承Program.csBird.csBoss.csCrow.csEn...

可爱的小腊肉 566

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

深度学习工具包 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")

C#编程调试与错误处理

NET框架提供了丰富的异常类型,如NullReferenceException和ArgumentException等。开发者还可以通过继承Exception类创建自定义异常,以表示特定的错误情况,使错误处理更加精确和清晰。掌握C#的调试和错误处理需要持续的实践和学习。除了利用内置工具,开发者还应培养预防错误的习惯,如编写清洁的代码、进行代码审查和采用测试驱动开发。随着经验的积累,能够更高效地识别和解决潜在问题,构建出更加稳定和高效的应用程序。

weiruan_fey的博客 770

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C#中的调试和错误处理

1、输出调试信息: 可以使用函数Debug.WriteLine();                       Trace.WriteLine(); 区别,在于前者只有在调试状态下才输出,后者还可以用于发布版本。 2、try...catch...finally 通过这个函数来捕获异常。 3、附加代码在vs2010中亲自测试通过 using System; using System.

ghevinn欢迎您光临 1864

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C#学习笔记(十)-- 调试和错误处理

一、非中断模式下的调试 非中断模式下的调试需要把调试信息输入到output窗口,在运行期间把文本写入output窗口是非常简单的,只需要将所需的调用代替WriteLine()的调用,此时可以使用如下两个命令: Debug.WriteLine(); Trace.WriteLine(); 这两个命令函数的用法几乎完全相同,但有一个重要区别:第一个命令仅在调试模式下运行,而第二个命令还可以用于发布程序。Debug.WriteLine()和Trace.WriteLine()方法包含在System.D..

不学会C++不改名 1万+

C# 一分钟浅谈:GraphQL 错误处理与调试

确保 GraphQL 模式定义清晰且完整,避免模糊不清的字段定义。使用工具(如GraphiQL)进行模式验证,确保模式的正确性和一致性。

2403_88969259的博客 1110

C#的调试和错误处理

再优秀的程序员在编程的过程中也会犯些错误,何况是我们这些初级程序学者;好的程序员会找出一些错误并修改它们.有时候程序中存在一些微妙的错误我们发现不了的时候就得跟踪代码进行调试. 一.Visual Studio中的调试 在调试模式下运行程序时,运行的是编写好的代码.调试程序的信息在VS执行每行代码过程中发生了甚么都有记录,这些信息保存在Debug目录下的.pdb格式文件中. 在运行期间把文本写...

weixin_34344403的博客 216

5 调试和错误处理

调试和错误处理 1 : Visual Studio 中的调试1.1 : 非中断(正常)模式下调试1.2 : 中断模式下的调试2 : 错误处理2.1 : try...catch...finally2.2 : 列出与配置异常2.3 : 异常处理注意事项2.4 : C# Exception:异常类2.5 : C#自定义异常(throw抛出异常2.6 : C# Debug和Trace:输出调试信...

xu1993的博客 217
上一篇: C++笔试题整理
下一篇: C++设计模式整理001-原则和分类
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

公众号:程序喵星人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值