面试题答案
一键面试在Fortran中,可以使用TRY - CATCH
结构来捕获异常。以下是处理文件读取时END - OF - FILE
错误的代码示例:
program handle_eof_error
implicit none
integer :: unit_num, ierr
real :: num
character(len=100) :: filename = 'input.txt'
open(newunit = unit_num, file = filename, iostat = ierr)
if (ierr /= 0) then
print *, 'Error opening file'
stop
end if
do
try
read(unit_num, *, iostat = ierr) num
if (ierr == 0) then
! 在这里进行数值计算
print *, 'Read value:', num
else if (ierr < 0) then
exit
else
print *, 'Read error'
exit
end if
catch (e)
if (e%name() == 'EndOfFile') then
exit
else
print *, 'Unexpected error:', e%name()
stop
end if
end try
end do
close(unit_num)
end program handle_eof_error
异常捕获块中的逻辑解释
-
维护程序状态:
- 当
END - OF - FILE
错误发生时(ierr < 0
),程序通过exit
语句跳出循环,停止文件读取操作,确保不会继续尝试读取文件末尾之后的数据,从而维护了程序的状态。 - 对于其他非
END - OF - FILE
异常(通过e%name()
判断异常类型),如果是意外错误,打印错误信息并终止程序,防止程序在错误状态下继续执行导致未定义行为。
- 当
-
控制流程:
TRY - CATCH
结构确保了文件读取过程中的异常能够被捕获。当捕获到异常时,CATCH
块内的逻辑会根据异常类型决定程序的走向。- 对于
END - OF - FILE
异常,通过exit
跳出循环,结束文件读取,后续可以继续执行关闭文件等清理操作。对于其他异常,程序会打印错误信息并终止,避免异常情况对后续逻辑产生影响,保证了程序控制流程的正确性。