`
aijuans8
  • 浏览: 191548 次
社区版块
存档分类
最新评论

.Net中使用com组件后发生System.ArithmeticException异常的解决办法

 
阅读更多

最近在开发一个.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&

分享到:
评论

相关推荐

    System.ArithmeticException(解决方案).md

    项目中碰到的,记录一下解决方案

    java 除0发生的算术异常(ArithmeticException)

    2. **使用`throws`关键字:** 如果你不打算在当前方法内部处理异常,可以在方法签名中使用`throws`声明,将异常传递给调用者处理。例如: ```java public void divideNumbers(int a, int b) throws Arithmetic...

    java.lang.ArithmeticException(解决方案).md

    项目中碰到的,记录一下解决方案

    ArithmeticException解决办法.md

    ArithmeticException解决办法.md

    ArithmeticException如何解决.md

    ArithmeticException如何解决.md

    .NET-第5部分.ppt

    1. `System.ArithmeticException`:这是所有算术运算期间发生的异常的基础类。 2. `System.ArrayTypeMismatchException`:当存储到数组中的对象类型与数组实际类型不匹配时抛出。 3. `System.DivideByZeroException`...

    ArithmeticException(解决方案).md

    ArithmeticException(解决方案).md

    vb.net基本入门学习资料.doc

    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....

    实验五 Java异常处理实验.docx

    上面的代码将抛出多种类型的异常,并使用 finally 语句处理异常后执行的代码。 ### 六、实验五:了解多个 catch 语句的使用 多个 catch 语句可以用于捕获不同的异常。例如: ```java public void Test() { try { ...

    asp.net(C#)异常课件

    更具体的异常类型,如`System.ArithmeticException`和`System.DivideByZeroException`,则分别代表特定类型的错误。`System.ApplicationException`是另一个重要的异常类,它是应用程序自定义异常的基类。 .NET中的...

    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.vb.net的String...

    .NET课件--第5部分类型管理.ppt

    - `System.ArithmeticException`:所有算术运算异常的基础类,包括除以零等情况。 - `System.ArrayTypeMismatchException`:当尝试将不兼容类型的对象放入数组时抛出。 - `System.DivideByZeroException`:尝试除以...

Global site tag (gtag.js) - Google Analytics