使用VS2019与Intel Fortran Compiler 2021时,如何处理除零错误并终止程序?
在Visual Studio 2019 + Intel Fortran Compiler 2021中处理Fortran除以零并终止程序的方法
方法一:通过编译器选项启用浮点异常自动终止
- 打开Visual Studio 2019的项目属性面板,定位到Intel Fortran > Floating Point选项
- 将Floating Point Exception Handling设置为
Yes (/fpe:0),这个参数会让程序在触发除以零、浮点溢出等异常时直接终止,并输出系统级错误提示 - 若仅需针对除以零异常,可改用
/fpe:1(仅捕获除以零和无效浮点操作)
方法二:代码内手动检查除数(自定义错误信息)
在执行除法前主动判断除数是否为0,自定义错误提示并终止程序,示例代码:
program test_divide implicit none integer :: a, b, result a = 10 b = 0 if (b == 0) then write(*, '(A)') "错误:除数为零,程序终止" stop 1 ! 非零退出码标记异常终止 end if result = a / b write(*, '(I0)') result end program test_divide
- 这种方式灵活性更高,你可以自定义错误内容,还能在终止前执行资源清理等操作
stop 1会让程序以退出码1结束,便于后续脚本或工具识别异常状态
方法三:使用IEEE浮点异常处理模块(精确控制)
Intel Fortran 2021支持Fortran 2003标准的IEEE异常处理模块,可精准捕获除以零异常:
program ieee_divide_test use, intrinsic :: ieee_exceptions implicit none real :: a, b, result a = 10.0 b = 0.0 ! 开启除以零异常的终止触发 call ieee_set_halting_mode(ieee_divide_by_zero, .true.) ! 执行除法运算 result = a / b write(*, '(F0.1)') result end program ieee_divide_test
- 编译前需在项目属性中设置Intel Fortran > Language > Fortran Standard为
Fortran 2003或更高版本 - 该方法可精准控制要捕获的异常类型,不会干扰其他合法浮点操作
内容的提问来源于stack exchange,提问作者Mohammad Reza
相关产品推荐
相关产品推荐

