Windows平台Oracle Forms的frmcmp.exe批处理模式错误捕获问题
Oracle Forms frmcmp.exe 批处理模式错误捕获方案
frmcmp.exe 12.2.1.4.0在批处理模式下,确实不会主动弹出错误窗口,也不会默认生成.err文件或直接输出错误到控制台,但这类连接错误并没有被隐藏,可通过以下方式捕获:
检查命令退出码
编译失败时frmcmp会返回非0的退出代码,Windows批处理中可通过%errorlevel%变量判断是否出错:frmcmp.exe module=myform.fmb userid=wrong/pswd@invalid_tns batch=yes if %errorlevel% neq 0 ( echo 编译失败,请检查用户名、密码或TNS配置 )这种方式能快速判断是否出错,但无法获取具体错误原因。
重定向输出到日志文件
利用Windows命令行重定向功能,把标准输出和错误流合并写入文件,就能捕获到具体错误信息:frmcmp.exe module=myform.fmb userid=wrong/pswd@invalid_tns batch=yes > frmcmp_compile.log 2>&1打开生成的
frmcmp_compile.log,里面会包含ORA-12154(TNS无法解析服务名)、ORA-01017(用户名/密码无效)这类具体错误提示。用PowerShell封装捕获详情
如果需要直接在控制台查看错误,可借助PowerShell脚本调用frmcmp并捕获输出:$compileOutput = & frmcmp.exe module=myform.fmb userid=wrong/pswd@invalid_tns batch=yes 2>&1 if ($LASTEXITCODE -ne 0) { Write-Host "编译错误详情:" $compileOutput $compileOutput | Out-File frmcmp_error.log -Encoding UTF8 }脚本会直接打印错误信息,同时保存到日志文件中。
需要注意的是,frmcmp在批处理模式下只是不主动展示错误,并非隐藏了错误信息,通过重定向或脚本捕获的方式就能拿到完整的错误内容。
内容的提问来源于stack exchange,提问作者user3591551
相关产品推荐
相关产品推荐

