Java Try Catch 终于没有技巧

我查看一些新代码。 该程序只有一个块 try 和 finally. 自街区以来 catch 排除了块的工作原理 try, 如果他面临例外或者可以扔掉的东西? 它只是直接到最后一块吗?
已邀请:

裸奔

赞同来自:

如果块中有任何代码 try 可以给予证明例外,它应该出现在提案中 throws 方法签名。 如果抛出未验证的异常,则源自泡沫方法。

堵塞 finally 无论是否引起异常,总是执行它。

风见雨下

赞同来自:

小笔记
try

/
finally

: finally 始终只会执行


System.exit//

叫。

JVM 失败。

堵塞
try{}

永远不会结束 /例如,无限循环/.

帅驴

赞同来自:

语言规范 Java

/1/

描述它是如何执行的
try-catch-finally

.
缺乏捕获量是不缺失的捕获,能够捕获这个主题。

如果执行块 try 由于投掷值急剧结束 V, 这是选择:

如果时间类型的执行 V 分配给任何优惠的参数 catch 操作员 try, 那 …


如果时间类型的执行 V 未分配给任何优惠的参数 catch 操作员 try ,

然后块正在运行 finally

. 然后有一个选择:

如果是块 finally 正常完成,然后运营商 try 由于投掷值急剧结束 V.

如果是块 finally 突然完全 S, 那个运营商 try 突然完全 S /和投掷价值 V 丢弃和遗忘

/

.



/1/
http://docs.oracle.com/javase/ ... .20.2

窦买办

赞同来自:

在异常将抛出到外部单元之前执行内部单元。


public class TryCatchFinally {

public static void main/String[] args/ throws Exception {

try{
System.out.println/'A'/;
try{
System.out.println/'B'/;
throw new Exception/"threw exception in B"/;
}
finally
{
System.out.println/'X'/;
}
//any code here in the first try block
//is unreachable if an exception occurs in the second try block
}
catch/Exception e/
{
System.out.println/'Y'/;
}
finally
{
System.out.println/'Z'/;
}
}
}


带领


A
B
X
Y
Z

江南孤鹜

赞同来自:

堵塞 finally 始终在完成块后开始 try, 无论是 try 通常或异常由于异常,呃, throwable.

如果块中的任何代码创建异常 try, 然后当前方法简单地重复 /或继续创造/ 同样的例外 /开始街区后 finally/.

如果是块 finally 发表例外 / 错误 / throwable, 已经期待 throwable, 他变得丑陋。 老实说,我完全忘了究竟发生了什么 /对于我的认证多年前这么多/. 一世

我认为

, 两种抛出物体都连接在一起,但有一些 - 然后是一个特殊的巫毒你要做的 /T. E.-呼吁一种我要看的方法/, 以前获得原始问题 "finally" blevernet,呃,拔出。

顺便一提, try / 最后是资源管理的相当常见的事情,从而以来 java 没有析构函数。

E.g. -


r = new LeakyThing//;
try { useResource/ r/; }
finally { r.release//; } // close, destroy, etc


"Finally", 另一个建议:如果你全部

相同的

陷阱或捕获特定的目标 /预期的/ 子类具有投掷或仅捕获的可能性 "Throwable", 和

不是

"Exception", 对于一般陷阱错误 catch-all. 太多问题,如愚蠢的反思,扔 "Errors", 但不是 "Exceptions", 他们会被任何人滑倒 "catch all", 编码为:


catch / Exception e/ ... // doesn't really catch *all*, eh?


相反:


catch / Throwable t/ ...

帅驴

赞同来自:

Java 版本到Version. 7 允许这三种组合

try-catch-finally

...


try - catch
try - catch - finally
try - finally


堵塞
finally

无论块中发生的情况如何,都会被执行
try

或者/和
catch

. 因此,如果没有块
catch

, 这里不会处理异常。

但是,您仍然需要一个异常处理程序 - 在代码中 - 如果您当然不希望您的申请完全拒绝。 这取决于应用程序的架构,其中该处理程序位于其中。

Java 堵塞 try 必须遵循块参数 catch 或者 finally.

对于每个街区 try 可能是零或更多块 catch, 但只有一个街区 finally.

堵塞 finally 如果程序完成工作,则不会执行 /要么被称为 System.exit//, 或导致致命错误会导致过程中断/.

江南孤鹜

赞同来自:

块是如何工作的 try, 如果
遇到一个例外或其他东西
投掷

除了任何其他情况下,否则抛出块的例外,当没有捕获。

堵塞 finally 无论街区如何完成 try 事实证明,无论是否有任何捕获,无论是否有一致捕获。

块 catch 和 finally 是正交部件块 try. 你可以拥有某种东西或其他东西。 从 Java 7, 你可以拥有任何人!

卫东

赞同来自:

你试过用这个程序做这个吗? 这将是 goto finally block 和执行 finally block, 但除了外汇不会被处理。 但可以在块中取消此异常 finally!

郭文康

赞同来自:

堵塞 finally 完成块后执行 try. 如果在块内部抛出某些东西 try, 当他离开街区时 finally, 它是执行的。

奔跑吧少年

赞同来自:

在街区内
try

我们编写可能导致异常的代码。
堵塞
catch

- 这是我们处理异常的地方。
堵塞
finally

无论是否发生异常,都始终执行。

现在,如果我们有一个街区 try-finally 而不是bloc. try-catch-finally, 该例外不会被处理,并且在块之后 try 而不是控制将进入块 catch, 它会进入街区 finally.
我们可以使用块 try-finally, 除非我们不想做任何事情。

小明明

赞同来自:

无论是异常,遗弃还是不被遗弃
try

- 堵塞
finally

将被执行。 不抓住异常。

要回复问题请先登录注册