我正在使用JODConverter将.xls和.ppt转换为.pdf格式.为此,我有类似的代码
try{
//do something
System.out.println("connecting to open office");
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
System.out.println("connection object created");
connection.connect();
System.out.println("connection to open office successful");
//do something
if(!successful)
throw new FileNotFoundException();
}catch(Exception e){
System.out.println("hello here");
System.out.println("Caught Exception while converting to PDF ");
LOGGER.error("Error in converting media" + e.getMessage());
throw new MediaConversionFailedException();
}finally{
decode_pdf.closePdfFile();
System.out.println("coming in finally");
//do something here
}
Run Code Online (Sandbox Code Playgroud)
我的输出:
connecting to open office
connection object created
coming in finally
Run Code Online (Sandbox Code Playgroud)
PS返回类型的方法是 void
这怎么可能 ?即使connection.connect()中存在一些问题,它也会进入catch块.困惑
实际上,我尝试了对代码进行防错并最终使其看起来非常混乱.
我有一个功能设置来读取某种类型的文件.我希望函数在出现问题时返回false,如果一切正常则返回true.我无法弄清楚如何构建一切.
我有一个尝试打开文件流的初始try-catch块.在那之后,我在读取过程中进行了一些其他检查,例如文件大小和某些偏移处的值.我设置的方式是使用if else语句.如:
if(condition){
}
else{
MessageBox.Show("There was an error");
br.Dispose();
fs.Dispose();
return false;
}
Run Code Online (Sandbox Code Playgroud)
... br是二进制阅读器,fs是文件流.像这样有很多块,这么多次写同样的东西似乎是不好的做法.首先想到的是将整个事物包装在try-catch语句中并抛出异常而不是使用if else块.我记得在阅读try-catch语句时,拥有它们是好事,但不要用它们包装所有内容.说实话,我仍然不完全理解为什么在try catch语句中包装所有内容都是不好的做法,因为它们只有在出现错误时才会生效,在这种情况下程序正在向南移动...
此外,我是否必须关闭二进制阅读器和文件流,或者关闭一个关闭另一个?有没有办法使用它们而不必处理它们?
以下是两种调用方式callscript(伪代码):
使用重复的电话
if flag == true
flag = false
callscript
flag = true
else
callscript
endif
Run Code Online (Sandbox Code Playgroud)
使用额外的变量
flag2 = flag
flag = false
callscript
flag = flag2
Run Code Online (Sandbox Code Playgroud)
条件
flag就是false当脚本调用.flag值必须恢复为原始值.有没有比这两个更好的方法呢?如果没有,哪一个是更好的选择?
我有一个循环运行,每次迭代增加一个变量的值,我希望能够在键盘上按一个键来停止循环并报告变量的最终值.事情是,我无法弄清楚如何在C中做到这一点.我觉得很愚蠢,因为我似乎忽略了一些非常简单易行的方法,但我尝试的一切都会停止循环直到我按下一个键键盘,基本上与我想要的完全相反.
基本上我想要做的是这样的事情:
while (key is not pressed)
increment value
print final value
那有意义吗?无论如何,有关如何在C中执行此操作的任何提示?