在Linux上,Fortran程序的錯誤處理和日志記錄可以通過以下幾種方法實現:
if (error_condition) then
write(*,*) "Error: Error message"
stop
endif
if (error_condition) then
write(*,*) "Error: Error message"
error stop
endif
open(unit=10, file="data.txt", status="old", iostat=ios)
if (ios /= 0) then
write(*,*) "Error: Unable to open data.txt"
stop
endif
integer :: log_unit
open(newunit=log_unit, file="log.txt", status="replace")
write(log_unit,*) "Info: Program started"
if (error_condition) then
write(log_unit,*) "Error: Error message"
close(log_unit)
stop
endif
write(log_unit,*) "Info: Program finished successfully"
close(log_unit)
module error_handling
implicit none
abstract interface
subroutine error_handler(error_message)
character(len=*), intent(in) :: error_message
end subroutine error_handler
end interface
procedure(error_handler), pointer :: handle_error => null()
end module error_handling
submodule (error_handling) error_handling_impl
contains
subroutine set_error_handler(handler)
procedure(error_handler) :: handler
handle_error => handler
end subroutine set_error_handler
subroutine report_error(error_message)
character(len=*), intent(in) :: error_message
if (associated(handle_error)) then
call handle_error(error_message)
else
write(*,*) "Error: ", error_message
stop
end if
end subroutine report_error
end submodule error_handling_impl
program main
use error_handling
implicit none
call set_error_handler(my_error_handler)
if (error_condition) then
call report_error("Error message")
endif
contains
subroutine my_error_handler(error_message)
character(len=*), intent(in) :: error_message
write(*,*) "Custom error handler: ", error_message
stop
end subroutine my_error_handler
end program main
這些方法可以幫助你在Linux上實現Fortran程序的錯誤處理和日志記錄。根據實際需求,可以選擇合適的方法來處理程序中可能出現的錯誤。