最近在开发一个.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...
项目中碰到的,记录一下解决方案
ArithmeticException解决办法.md
ArithmeticException如何解决.md
1. `System.ArithmeticException`:这是所有算术运算期间发生的异常的基础类。 2. `System.ArrayTypeMismatchException`:当存储到数组中的对象类型与数组实际类型不匹配时抛出。 3. `System.DivideByZeroException`...
ArithmeticException(解决方案).md
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`:尝试除以...