第7章 VB NET异常处理

合集下载

vb错误处理

vb错误处理

vb错误处理第一篇:vb错误处理Vb错误处理出错处理(1)设置错误陷阱On Error Resume Next若出现错误,则将当前错误语句忽略,执行下条语句。

On Error GoTo 语句标号On Error GoTo 0 不进行任何处理(2)编写错误处理程序Resume:接着错误的地方执行,重试。

Resume Next:类似On Error Resume Next,忽略当前错误语句,执行下一语句Resume :到标号那里去处理。

过程级、模块级节选:Onerrorgoto标签是放在错误发生之前,有效范围是到此事件的结束,包括错误处理时发生的错误。

(此时的错误一般是没有想到的,故也没有处理)所以要保证不要在错误处理的代码中写复杂的代码。

OnErrorGotoErr_Normal'一般代码sql= “insertinto......”OnErrorGotoErr_Rolladocn.BeginTransmitTransOnErrorGotoErr_Normal....ExitsubErr_Normal:'正常错误处理ExitSubvb6.0 遇到错误能不退出吗2012-1-25 20:04提问者:咫·尺 | 浏览次数:278次比如遇到数据溢出啊等,弹出错误以后,就直接把程序关闭了,数据都没保存,能弹出错误后,不关闭程序吗?满意回答插入以下代码:On Error Resume Next即可。

意思是,程序遇到错误不理会,继续执行。

或者使用GoTo,比如下面的代码计算肯定是溢出的,但程序不会退出,不过会提示: On Error GoT o ToExitDim g, ErrNum As Booleang = 1Do Until ErrNumg = g * 1024LoopToExit:If Err.Number = 6 ThenPrint “程序溢出,计算结果不准确”, gExit SubEnd If或者使用以下代码,可以完全显示计算过程:Dim WithEvents List As ListBoxPrivate Sub Form_Load()On Error GoTo ToExitDim g, ErrNum As Booleang = 1Set List = Me.Controls.Add(“VB.ListBox”, “List”)With List.Left = 0.Top = 0.Width = Form1.Width490.Visible = TrueEnd WithDo Until ErrNumg = g * 1024List.AddItem gLoopToExit:If Err.Number = 6 ThenList.AddItem “程序溢出,计算结果不准确” & gExit SubEnd IfEnd Sub追问是不是要在每一个容易出错的sub里面都要这样加一下?有没有整体设置一下或者写代码的?每个sub都写一下也挺麻烦的回答首先,第一行是每个里边都需要有的,有了这一行,才会执行错误跳转。

NET异常处理规范

NET异常处理规范

.NET异常处理规范基本原则:上层应用中所有的异常均需要捕获并处理,防止程序异常退出以下要点请注意:1、没有判断变量是否为空,直接使用:例如:string s = .ToString(); //Name从数据库查出来,可能为null foreach (Column c in table.Columns) //Columns为数组,从数据库查出来,可能为null 建议:object.ToString()最好写成Convert.ToString(object)2、集合变量长度为零,却在直接使用项例如:foreach (object obj in objList){comboBox.Items.Add(obj);}comboBox.Items[0].Selected = true; //可能出异常3、对类型转换没有注意例如:object obj = 1;string str = (string)obj; //此处将出异常正确的写法为:if (obj is string){string str = (string)obj;//处理str}或者string str = obj as string;if (str != null){//处理str}4、Dictionary<T1, T2>类使用注意事项Add方法和TryGetValue方法中的参数key均不能为空和Hashtable不同,Dictionary<T1, T2>直接通过索引器获取项时,当key对应的项不存在时,将抛出异常,因此推荐用法为:object value = null;If (dict.TryGetValue(key, out value)){//处理}或者If (dict.ContainsKey(key)){object value = dict[key];// 处理}5、文件处理时的异常文件处理时,一定要对路径是否存在,文件是否存在,文件是否只读进行相应的判断6、线程异常多线程程序中,其他线程的异常在主线程中无法捕捉到,就算是用了AppDomain也不行。

vb.net的出错处理

vb.net的出错处理

的出错处理
中的出错处理是使用excetions而不是ON Error GOTO语法来实现的,ON Error GOTO现在已经不支持了,Visual Basic现在提供一个结构化的出错处理过程,使用Try...Catch...Finally表述。

结构化的出错处理过程是和exceptions 有关的,类似于Select Case或者While的一个具有选择关系的代码结构。

这使得程序的代码更具有健壮性,可以进行更加复杂的错误处理。

exceptions的运行机理是这样的,当有错误出现时,错误处理过程就会屏蔽掉使得在Try模块中产生错误的运行代码,并且使用Catch表述来获取错误,语法如下:
首先,运行Try模块中的代码,如果没有错误的话就接着运行Finally模块里的代码,如果有错误的话,就运行Catch
模块里的代码,在Catch模块里用户可以做出一些出错处理,然后接着运行Finally模块里的代码并退出整个模块。

下面的例子就是显示怎样进行出错处理的设置,当用户访问一个数组列表时,超过列表的长度以后,就会产生一个错误,代码如下:
上面的例子把错误信息打印出来,并且指出代码产生错误的位置,并且继续运行下去。

下面就是运行的结果:
相反,如果用户不进行错误处理的话,将在运行的时候从系统得到错误的信息,并且直接退出运行环境,而不是继续运行下去。

系统将会出现如下错误信息:。

VBA处理异常情况的方法与示例

VBA处理异常情况的方法与示例

VBA处理异常情况的方法与示例在VBA编程中,处理异常情况是一项至关重要的任务。

当程序在执行过程中遇到错误或异常情况时,如果没有妥善的处理机制,可能会导致程序崩溃或产生不可预测的结果。

因此,了解如何处理异常情况是编写稳定和可靠的VBA代码的关键。

本文将介绍VBA处理异常情况的常用方法和示例,帮助您更好地处理和调试程序中的错误。

1. 使用On Error语句On Error语句是VBA中处理异常情况的基本方式。

它允许您指定一段代码块,以便在发生错误时执行特定的操作。

示例:```vbaSub ErrorHandlerExample()On Error GoTo ErrorHandlerDim num1 As IntegerDim num2 As IntegerDim result As Doublenum1 = 10num2 = 0result = num1 / num2MsgBox "The result is: " & resultExit SubErrorHandler:MsgBox "An error has occurred: " & Err.DescriptionEnd Sub```在上述示例中,我们尝试将一个数值除以零,这将引发一个类型为11的运行时错误(除以零错误)。

当出现错误时,代码将跳转到标签为"ErrorHandler"的代码块,并显示一个消息框来显示错误描述。

通过这种方式,我们可以捕捉错误并按照需要进行处理。

2. 使用Err对象获取错误信息在VBA中,Err对象用于访问有关发生的错误的信息。

它提供了许多属性,可以帮助我们识别和处理错误。

示例:```vbaSub ErrorHandlerExample2()On Error GoTo ErrorHandlerDim filePath As StringfilePath = "C:\NonExistingFile.txt"Open filePath For Input As #1Close #1Exit SubErrorHandler:MsgBox "An error has occurred: " & Err.DescriptionIf Err.Number = 53 ThenMsgBox "File not found!"End IfEnd Sub```在上述示例中,我们尝试打开一个不存在的文件。

vbnet教程

vbnet教程

vbnet教程 是一种由微软开发的面向对象的编程语言,用于开发应用程序和网站。

本教程旨在帮助初学者了解 的基本概念和语法。

以下是一些重要的主题。

变量和数据类型在 中,您可以使用变量来存储数据。

变量需要一个数据类型来确定可以存储的值的范围。

常见的数据类型包括整数、浮点数、字符串和布尔值。

您可以使用关键字 Dim 来声明变量。

条件语句条件语句用于根据给定的条件执行不同的操作。

在 中,您可以使用 If-Then、If-Then-Else 和 Switch 语句来实现条件逻辑。

循环循环语句用于重复执行特定的代码块。

提供了几种类型的循环,包括 For 循环、While 循环和 Do-While 循环。

这些循环结构可以根据特定的条件来控制循环的次数。

数组数组是一种用于存储多个相同类型的值的数据结构。

在 中,您可以使用关键字 Dim 来声明数组,并使用索引访问数组元素。

函数和过程函数和过程是可重用的代码块。

函数返回一个值,而过程不返回任何值。

您可以使用关键字 Function 和 Sub 来定义函数和过程,并使用关键字 Return 和 Exit Sub 来返回值。

面向对象编程 是一种面向对象的编程语言,支持封装、继承和多态。

您可以使用类来创建对象,使用属性和方法来访问和操作对象的状态和行为。

异常处理异常处理用于捕获和处理程序中可能出现的错误。

在 中,您可以使用 Try-Catch-Finally 块来捕获和处理异常。

文件操作 提供了许多用于读取和写入文件的功能。

您可以使用关键字 File 和 Directory 来操作文件和目录。

以上是一些 的基本概念和语法。

通过学习这些内容,您将能够开始编写简单的 程序。

希望本教程对您有所帮助!。

VB NET 补充章节

VB NET 补充章节
第七章 程序调试与错误处理 5
7.1.3 逻辑错误
• 逻辑错误指产生意料之外或多余结果的错 误,这类错误是最难找的错误,在大型应用程 序中最显著. • 例:找出N值,使得1^2+2^2+……+n^2<15
第七章 程序调试与错误处理
6
7.2 代码的调试
• 7.2.1 逐行调试(自动窗口) • 7.2.2 设置断点 • 7.2.3 即时与监视窗口
• Visual 中的异常处理
Try [tryStatements] [Catch [exception [As type]] [catchStatements]] [Exit Try] …… [Finally [FianllyStatements]] End Try
第七章 程序调试与错误处理 9
第七章 程序调试与错误处理
13
7.2 错误的捕获
例:使用ArgumentOutOfRangeException类。若 输入月份1~12,不发生错误;若输入其它数 字,结果显示“不合理月份”。
第七章 程序调试与错误处理
14
End of Chapter
第七章 程序调试与错误处理 4
7.1.2 执行错误
• 执行错误是用户在运行程序时发生的错误, 使得程序中断执行. • 下面是一些比较典行的执行错误: • 1.用零做除数. • 2.访问不存在的文件 • 3.输入数据类型不符 • 4.访问超过上限的数组 • 5.调用一段程序,但传递给它错误的参数数 目和参数类型 • (例除法运算)
7.3 错误的捕获
• Exception类
类别
ArgumentOutOfRangeException DivideByZeroException Exception IndexOutOfRangeException InvalidCastException

vb.net中文件读写的用法

vb.net中文件读写的用法

是一种基于VB语言的面向对象程序设计语言,它是微软推出的一种用于开发Windows评台应用程序的工具。

在中,文件的读写是非常常见的操作,我们可以通过一些API来实现文件的读写操作。

在本文中,我将介绍如何在中进行文件的读写操作,包括文件的打开、读取、写入和关闭等操作。

希望通过本文的介绍,能够帮助大家更好地掌握中文件读写的用法。

一、文件的打开在中,我们可以使用FileStream类来打开一个文件。

FileStream类是用于提供文件的读写操作的一个类,通过它我们可以打开一个文件,并进行读写操作。

下面是一个打开文件的示例代码:Dim fs As FileStream = New FileStream("C:\test.txt", FileMode.Open)在上面的代码中,我们首先创建了一个FileStream对象,并以"test.txt"为文件名,以FileMode.Open的方式来打开了这个文件。

通过这个代码,我们就可以在中打开一个文件了。

二、文件的读取在中,我们可以使用StreamReader类来进行文件的读取操作。

StreamReader类是用于读取文件内容的一个类,通过它我们可以方便地读取文件的内容。

下面是一个读取文件的示例代码:Dim sr As StreamReader = New StreamReader("C:\test.txt")Dim content As Stringcontent = sr.ReadToEnd()Console.WriteLine(content)在上面的代码中,我们首先创建了一个StreamReader对象,并以"test.txt"为文件名来创建了这个对象。

然后我们通过sr.ReadToEnd()方法来将整个文件的内容读取到content变量中,并最后将content的内容输出到控制台上。

VBA中的错误处理和异常情况处理指南

VBA中的错误处理和异常情况处理指南

VBA中的错误处理和异常情况处理指南在使用VBA编写代码时,错误处理和异常情况处理是至关重要的。

良好的错误处理可以确保代码在遇到错误时能够正确地执行并给出适当的反馈,提高代码的稳定性和可靠性。

本文将介绍VBA中常见的错误处理方法和技巧,帮助您编写更健壮的代码。

一、错误处理基础1. 常见的错误类型VBA中的错误类型包括语法错误、运行时错误、逻辑错误等。

语法错误是最常见的错误类型,例如拼写错误、未声明的变量等。

运行时错误是在代码执行时发生的错误,常见的运行时错误包括除以零、数组越界等。

逻辑错误是代码逻辑的错误,导致程序不按预期的方式执行。

2. VBA错误处理语句VBA提供了一些专门用于处理错误的语句,包括On Error语句、Err对象和Resume语句。

On Error语句用于定义错误处理的行为。

常见的用法包括On Error Resume Next(忽略错误并继续执行下一条语句)、On Error GoTo [label](跳转到指定的错误处理标签)。

Err对象用于获取有关错误的信息,包括错误代码、错误描述等。

可以使用Err.Number获取错误代码,Err.Description获取错误描述。

Resume语句用于控制程序在错误发生后的执行流程。

可以使用Resume语句恢复程序的执行,也可以使用Resume Next跳过错误继续执行。

3. 错误处理的注意事项在编写错误处理代码时,需要注意以下几个方面:- 尽量避免使用全局错误处理,应尽早发现和处理错误,以便于定位和修复问题。

- 不要忽略所有异常情况,遇到严重错误时应适当提醒用户并终止程序的执行。

- 在处理错误时,应给出明确的错误信息,帮助用户理解错误的原因和解决方法。

- 在编写错误处理代码时,应考虑各种可能的异常情况,并给出相应的处理逻辑。

二、常见的错误处理场景1. 检测语法错误在使用VBA编写代码时,经常会出现语法错误,例如拼写错误、未声明的变量等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【例7-l】使用On Error语句产生Err对象,通过测试Err对象,显示一个“过程调用或参数无效”错误对话框,结果如图8-4所示。

操作步骤:
(1)界面设计:
创建一个Windows应用程序,在窗体上创建一个按钮控件,修改其Text属性为“生成错误”。

(2)双击按钮控件进入代码设计窗口,对其Click事件编写代码如下:
图8-4 错误测试对话框
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
Dim Msg As String
On Error Resume Next
Err.Clear()
Err.Raise(5)
If Err.Number <> 0 Then
Msg = "错误#" & Str(Err.Number) & "发生原因是:" & Err.Source & vbCrLf &
Err.DescriptionMsgBox(Msg, rmation, "Error")
End If
End Sub
提示:
这里的vbCrLf为系统内置常量,表示回车换行。

(3)保存项目,运行应用程序,单击窗体中的“生成错误”按钮,得到如图8-4所示的消息框。

【例7-2】使用非结构化异常处理方法处理被0除错误。

运行结果如图8-5所示的两个消息框。

图8-5 错误测试及处理结果对话框
操作步骤:
1.界面设计:
创建一个Windows应用程序,在窗体上创建一个按钮控件,修改其Text属性为“生成错误”。

2.双击按钮控件进入代码设计窗口,对其Click事件编写代码如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
Dim x As Integer, y As Integer, z As Integer
On Error GoTo DivideByZero '启用错误捕捉
x = 5
y = 0
z = x / y
On Error GoTo 0
MsgBox(x & "/" & y & "=" & z, rmation, "结果")
Exit Sub
DivideByZero:
MsgBox("0不可以作除数!", MsgBoxStyle.Exclamation, "错误")
y = 2
Resume '返回发生错误的语句z = x / y End Sub
3.保存项目,运行应用程序,单击窗体中的“生成错误”按钮,得到如图8-5所示的两个对话框。

提示:
这里的DivideByZero是行标签,行标签定义时由冒号结束。

【例7-3】使用Try…Catch…Finally结构,处理被0除错误。

运行结果为如图8-6所示的两个消息框。

(a)(b)
图8-6处理被0除错误,之后退出
操作步骤:
1.界面设计:
创建一个Windows应用程序,在窗体上创建一个按钮控件,修改其Text属性为“生成错误”。

2.双击按钮进入代码设计窗口,对其Click事件编写代码如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x As Integer = 5
Dim y As Integer = 0
Try
x /= y
Catch ex As Exception When y = 0
MsgBox(ex.Message, rmation, "被0除错误")
Finally
MsgBox("退出Try结构", rmation, "退出")
End Try
End Sub
3.保存项目,运行应用程序,单击窗体中的“生成错误”按钮,得到如图8-6(a)所示的消息框。

4.单击“确定”按钮后,得到如图8-6(b)所示的消息框。

【例7-4】第10章案例分解:
欢迎窗体是整个应用程序的入口,应在其中处理数据库连接问题。

案例中应用结构化异常处理方法处理数据库连接出现错误的问题。

相关部分代码如下:
Public Class Welcome
Private Sub Welcome_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
Call connect()
Try
cn.Open()
Catch ex As Data.OleDb.OleDbException
MessageBox.Show(ex.Message & "连接错误,程序将退出!", "数据库连接错误", MessageBoxButtons.OK, MessageBoxIcon.Error)
Application.Exit()
End Try
Dim frmLogin As New FrmLogin
frmLogin.ShowDialog()
End Sub
End Class
【例7-5】测试自己引发的一个异常。

完成功能:使用Throw语句,抛出一个异常,由调用的程序进行处理。

操作步骤:
(1)创建一个Windows应用程序,其自动创建的默认窗体为Form1。

(2)在窗体Form1上创建一个命令按钮控件,然后修改其Text属性为“产生错误”。

(3)在Forml中增加一个私有过程,代码如下:
Private Sub test()
Throw New Exception("我释放了一个异常")
End Sub
(4)对按钮的Click事件编写代码如下:
Try
test()
Catch ex AS Exception
MsgBox(ex.Message,MsgBoxStyle.Information,"测试异常")
End Try
(5)保存项目,运行应用程序,单击窗体中的“产生错误”按钮,得到如图8-7所示的对话框。

图8-7 例8-5的运行结果
【例7-6】测试用户输入的年龄,处理年龄的范围错误。

如果用户输入的不是1到100之间的数值,将抛出异常。

操作步骤:
(1)创建一个Windows应用程序,其自动创建的默认窗体为Form1。

(2)在窗体上建立一个Label,其Text属性为“年龄”,一个TextBox,一个Button,其Text 属性为“测试”。

(3)对按钮的Click事件编写代码如下:
Dim v AS Double
Try
v=Val(TextBoxl.Text)
If v<=0 Or v>100 Then
Throw New Exception("输入的年龄超出范围")
End If
Catch ex As Exception
MsgBox(TextBoxl.Text & vbCrLf &ex.Message,MsgBoxStyle.Question)
TextBoxl.Text=""
TextBoxl.Focus()
End Try
(4)保存项目,运行应用程序。

当在文本框中输入年龄后,单击窗体中的“测试”按钮,当输入的年龄小于等于0或者大于100时,会显示如图8-8所示的对话框。

图8-8 例8-6的运行结果。

相关文档
最新文档