最近在开发一个.Net程序,其中涉及到对com组件的调用,在调用完以后如果使用一些小的测试程序继续运行,一切正常,但是在使用带有GUI的form程序继续执行时,总是出现以下异常
Exception: System.ArithmeticException
Message: 算术运算中发生溢出或下溢。
Source: System.Drawing
at System.Drawing.Font.Initialize(FontFamily family, Single emSize, FontStyle style, GraphicsUnit unit, Byte gdiCharSet, Boolean gdiVerticalFont)
at System.Drawing.Font..ctor(String familyName, Single emSize, FontStyle style, GraphicsUnit unit, Byte gdiCharSet)
at Payment.Phone.ErrorForm.InitializeComponent() in E:/cvsroot/develope/payment/Phone/ErrorForm.cs:line 108
at Payment.Phone.ErrorForm..ctor(Util util, String msg) in E:/cvsroot/develope/payment/Phone/ErrorForm.cs:line 139
at Payment.Phone.ConfirmForm.lblNext_Click(Object sender, EventArgs e) in E:/cvsroot/develope/payment/Phone/ConfirmForm.cs:line 212
后来到处找资料,花了我一天的时间才给解决,以下是我的解决办法:
1.声明一个DLL掉用
[DllImport("msvcr70.dll", CallingConvention = CallingConvention.Cdecl)]
unsafe public static extern int _controlfp(int n, int mask);
2.在代码中添加以下代码方法
internal void ResetFPCR()
{
const int _EM_OVERFLOW = 0x0009001F;
const int _MCW_EM = 0x000FFFFF;
_controlfp(_EM_OVERFLOW, _MCW_EM);
}
3.在调用完com组件后,调用以上方法,如:
//这里调用com组件
//然后执行Reset方法
ResetFPCR();
注:具体详细请看http://support.microsoft.com/default.aspx?scid=KB;EN-US;q326219&
分享到:
相关推荐
常见问题
2. **使用`throws`关键字:** 如果你不打算在当前方法内部处理异常,可以在方法签名中使用`throws`声明,将异常传递给调用者处理。例如: ```java public void divideNumbers(int a, int b) throws Arithmetic...
项目中碰到的,已解决,写个文档记录一下
1. `System.ArithmeticException`:这是所有算术运算期间发生的异常的基础类。 2. `System.ArrayTypeMismatchException`:当存储到数组中的对象类型与数组实际类型不匹配时抛出。 3. `System.DivideByZeroException`...
vb.net基础教程 第一部分 Visual Basic.net基础 1.vb. net介绍 2.vb.net的优点 3.新建一个vb.net项目 4.编写第一个vb.net应用程序 第二部分 vb.net的语法部分 1.vb.net的Numeric数据类型 2.vb.net的Byte数据类型 3....
上面的代码将抛出多种类型的异常,并使用 finally 语句处理异常后执行的代码。 ### 六、实验五:了解多个 catch 语句的使用 多个 catch 语句可以用于捕获不同的异常。例如: ```java public void Test() { try { ...
更具体的异常类型,如`System.ArithmeticException`和`System.DivideByZeroException`,则分别代表特定类型的错误。`System.ApplicationException`是另一个重要的异常类,它是应用程序自定义异常的基类。 .NET中的...
第一部分 Visual Basic.net基础 1.vb. net介绍 2.vb.net的优点 3.新建一个vb.net项目 4.编写第一个vb.net应用程序 第二部分 vb.net的语法部分 1.vb.net的Numeric数据类型 2.vb.net的Byte数据类型 3.vb.net的String...
- `System.ArithmeticException`:所有算术运算异常的基础类,包括除以零等情况。 - `System.ArrayTypeMismatchException`:当尝试将不兼容类型的对象放入数组时抛出。 - `System.DivideByZeroException`:尝试除以...
这个框架可能是为简化搜索引擎的构建过程而设计,版本号1.1.1表明这是一个经过迭代优化后的稳定版本。下面将详细介绍这个框架可能涉及的关键知识点。 首先,"Easy-Es"这个名字暗示了它可能基于Elasticsearch(Es)...
Based on the provided information from the book "C# 3.0 With the .NET Framework 3.5 Unleashed," we can extract several key points and concepts that are essential for understanding the fundamentals of ...
1. `ArithmeticException`:当计算中出现除以零、非法运算等错误时,会抛出此类异常。 2. `ArrayIndexOutOfBoundsException`:当尝试访问数组的索引超出了数组的实际长度时,会抛出此类异常。 3. `...
A.Course.in.Arithmetic,.Jean-Pierre.Serre,数论教程
catch块中使用getMessage()方法来获取异常的具体信息,并将其显示出来。 实验题2中,程序使用throw语句来抛出ArithmeticException异常,并使用throws子句来声明该异常。在main方法中,程序使用try-catch语句来捕获...
### JAVA中常见的异常知识点详解 #### 一、`java.lang.NullPointerException` 在Java编程中,`java.lang.NullPointerException`(简称NPE)是最常见的异常之一。这种异常通常发生在尝试访问一个空对象引用的方法或...
上述示例中,如果尝试执行`1 / 0`这样的非法操作,将会触发`ArithmeticException`异常。此时,`catch`块中的代码会被执行,输出一条错误信息。 2. **try-finally结构** ```java public static void main(String...
- **RuntimeException 及其子类**:这类异常通常是由于程序设计问题引起的,如数组越界 (`ArrayIndexOutOfBoundsException`) 或除零错误 (`ArithmeticException`)。 #### 四、异常处理的基本结构 异常处理的核心...
在 catch 块中,我们使用 System.out.println() 方法来输出异常信息。 实验结果表明,程序总共捕捉了四个异常,每个异常各自属于不同的类型: 1. ArithmeticException 2. NullPointerException 3. ...
Java 中的异常类有多种,包括 Exception、Error、ArithmeticException、NullPointerException、Object、Throwable 等。这些异常类之间存在继承关系,例如,Exception 是 Throwable 的子类。 6. Java 异常处理 Java...