我知道try
语句在没有catch
或finally
的情况下无效,而finally
子句在try-catch
块中是可选的。但是,当我编写没有try
或catch
的{{1}}语句时,编译器建议插入finally
子句来完成try语句。
例如:
finally
错误代码:
try {
for (int j = 0; j <= i.length; j++) {
System.out.println(i[j]);
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Catch");
} //no errors
try {
for (int j = 0; j <= i.length; j++) {
System.out.println(i[j]);
}
} //syntax error
为什么Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Syntax error, insert "Finally" to complete TryStatement
at Driver.main(Driver.java:12)
是唯一推荐的语句?为什么不finally
?
&#34;尽管抛出异常,我可能希望发生一些事情,所以我可能不会以特定的方式处理特定的异常,但我可能希望确保至少发生SOMETHING泛型。如果我无法处理它,至少要做点什么。&#34;希望有人对此进行确认。
答案 0 :(得分:1)
因为没有try
或catch
的{{1}}根本没有意义。它只是没有所以如果你省略try-block,你会得到相同的结果。
答案 1 :(得分:0)
要求<!DOCTYPE html>
<html>
<title>tryme</title>
<head>
</head>
<body>
<script>
var instr = prompt("which instrument do you play?");
switch(instr) {
case "violin":
case "piano":
alert("Me too!");
break;
case "drums":
case "ukulele":
alert("sonds good");
break;
case "whistle":
alert("omg!!!");
break;
default:
alert("whatever...");
}
</script>
<noscript>"your browser doesnt support javascript"</noscript>
</body>
</html>
语句具有try
或catch
子句,因为如果没有finally
语句就没有意义
使用try
语句的整个想法是,如果try-block抛出异常,则需要进行某种处理。此处理可以是捕获异常(使用try
),也可以在块完成或抛出异常后执行某些操作(使用catch
)。然后,没有与finally
语句关联的此类操作会使try
语句无意义。
答案 2 :(得分:0)
try
或catch
不能跟finally
后跟catch
要修复它,请添加finally
或try{
for(int j = 0; j <= i.length; j++)
{
System.out.println(i[j]);
}
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("Catch");
}//no errors
try{
for(int j = 0; j <= i.length; j++)
{
System.out.println(i[j]);
}
}//syntax error
catch(Exception e) {
// ... handle errors ...
} finally {
// ... cleanup that will execute whether or not an error occurred ...
}
或两者,如下所示:
df.raster <- rasterize(df.sp, base.raster, field = "column", fun=median)
plot(df.raster)
答案 3 :(得分:0)
finally
保证finally
块中的代码始终执行,无论是否存在异常,您可以在finally
块中编写cleancode,但处理异常除外,例如关闭文件或关闭一个插座。 try-catch
用于捕获的异常,您可以在本地修复它。