VisualBasic图形、异常处理与格式规范详解
立即解锁
发布时间: 2025-08-17 00:31:34 阅读量: 1 订阅数: 6 

# Visual Basic 图形、异常处理与格式规范详解
## 1. 图形处理
### 1.1 Bitmap 类
Bitmap 类代表由像素数据定义的图像,它继承了 Image 类的属性和方法。以下是 Bitmap 类新增的一些实用方法:
| 方法 | 用途 |
| --- | --- |
| FromHicon | 从 Windows 图标句柄加载 Bitmap 图像 |
| FromResource | 从 Windows 资源加载 Bitmap 图像 |
| GetPixel | 返回表示指定像素的颜色 |
| LockBits | 将 Bitmap 图像的数据锁定在内存中,直到程序调用 UnlockBits 才可以移动 |
| MakeTransparent | 通过将指定颜色的像素的 alpha 分量设置为 0,使这些像素透明 |
| SetPixel | 设置指定像素的颜色值 |
| SetResolution | 设置 Bitmap 图像的水平和垂直分辨率(以每英寸点数 DPI 为单位) |
| UnlockBits | 解锁 Bitmap 图像在内存中的数据,以便系统在必要时重新定位它 |
### 1.2 Metafile 类
Metafile 类代表由图元文件记录定义的图像。这些记录定义了绘图命令,因此图像可以平滑缩放。与之相比,Bitmap 包含的像素数据在调整大小时会出现锯齿或模糊。Metafile 类继承了 Image 类的属性和方法,以下是 Metafile 类新增的一些实用方法:
| 方法 | 用途 |
| --- | --- |
| GetMetafileHeader | 返回与此 Metafile 关联的 MetafileHeader 对象 |
| PlayRecord | 播放图元文件记录。使用 Graphics 类的 EnumerateMetafile 方法获取播放图元文件记录所需的数据 |
## 2. 异常处理
### 2.1 标准异常类
在 Visual Basic .NET 中,有许多实用的异常类,当需要抛出错误时可以使用它们。以下是一些常见的标准异常类及其用途:
| 类 | 用途 |
| --- | --- |
| AmbiguousMatchException | 程序无法确定使用哪个重载对象方法 |
| ApplicationException | 所有非致命应用程序错误的基类。构建自定义异常类时,应从此类或其派生类继承 |
| ArgumentException | 参数无效 |
| ArgumentNullException | 不能为 Nothing 的参数值为 Nothing |
| ArgumentOutOfRangeException | 参数超出允许范围 |
| ArithmeticException | 发生算术、强制转换或转换操作 |
| ArrayTypeMismatchException | 程序试图在数组中存储错误类型的项 |
| ConfigurationException | 配置设置无效 |
| ConstraintException | 数据操作违反数据库约束 |
| DataException | ADO.NET 异常类的基类 |
| DirectoryNotFoundException | 缺少所需的目录 |
| DivideByZeroException | 程序试图除以零 |
| DuplicateNameException | ADO.NET 操作遇到重复名称(例如,试图创建两个同名的表) |
| EvaluateException | 当无法计算 DataColumn 的 Expression 属性时发生 |
| FieldAccessException | 程序试图不正确地访问类属性 |
| FormatException | 参数的格式与所需格式不匹配 |
| IndexOutOfRangeException | 程序试图访问数组或其他容器边界之外的项 |
| InvalidCastException | 程序试图进行无效的转换(例如,Integer.Parse(“ten”)) |
| InvalidOperationException | 当前不允许该操作 |
| IOException | 输入/输出(I/O)异常类的基类。发生通用 I/O 错误 |
| EndOfStreamException | 流到达末尾 |
| FileLoadException | 加载文件时出错 |
| FileNotFoundException | 查找文件时出错 |
| InternalBufferOverflowException | 内部缓冲区溢出 |
| MemberAccessException | 程序试图不正确地访问类成员 |
| MethodAccessException | 程序试图不正确地访问类方法 |
| MissingFieldException | 程序试图访问不存在的类字段 |
| MissingMemberException | 程序试图访问不存在的类成员 |
| MissingMethodException | 程序试图访问不存在的类方法 |
| NotFiniteNumberException | 浮点数为 PositiveInfinity、NegativeInfinity 或 NaN(非数字) |
| NotImplementedException | 请求的操作未实现 |
| NotSupportedException | 请求的操作不受支持(例如,程序可能要求例程修改以只读方式打开的数据) |
| NullReferenceException | 程序试图使用值为 Nothing 的对象引用 |
| OutOfMemoryException | 内存不足 |
| OverflowException | 算术、强制转换或转换操作导致溢出(例如,程序试图将大的 Integer 值赋给 Byte 变量) |
| PolicyException | 策略阻止代码运行 |
| RankException | 例程试图使用维数错误的数组 |
| ReadOnlyException | 程序试图修改只读数据 |
| SecurityException | 发生安全违规 |
| SyntaxErrorException | DataColumn 的 Expression 属性包含无效语法 |
| UnauthorizedAccessException | 由于 I/O 或安全错误,系统拒绝访问 |
可以使用 Throw 语句引发异常,例如:
```vb
Throw New DivideByZeroException("No employees are defined.")
```
此代码将描述异常的消息传递给异常类的构造函数。在这种情况下,除零异常发生是因为应用程序没有定义任何员工。
### 2.2 自定义异常类
要定义自定义异常类,需要创建一个继承自异常类的类。为了给使用该类的开发人员提供最大的灵活性,应提供四个构造函数,将其工作委托给父类的相应构造函数。以下是一个自定义异常类的示例:
```vb
Public Class InvalidWorkAssignmentException
Inherits ApplicationException
Public Sub New()
MyBase.New("This work assignment is invalid")
End Sub
Public Sub New(msg As String)
MyBase.New(msg)
End Sub
Public Sub New(msg As String, inner_exception As Exception)
MyBase.New(msg, inner_ex
```
0
0
复制全文
相关推荐









