2010-09-25 48 views
41

try-catch和throw子句有什么区别?何时使用这些?try-catch和throw在java中的区别

请让我知道。

+2

@ user393043,您是否查阅了文档并且仍然感到困惑?或者你甚至没有看过第一个文档? – 2010-09-25 18:08:53

+5

Docs?什么文件? :-P – 2010-09-25 18:09:49

+0

可能重复[抛出或尝试捕获](http://stackoverflow.com/questions/3203297/throws-or-try-catch) – 2010-09-25 18:23:21

回答

63
  • try块将执行一个敏感的代码可以抛出异常
  • 每当(捕获的类型)的异常在try块
  • finally块被称为时引发的catch块将被用于在之后,每隔之后try/catch块。即使未捕获到异常,或者以前的块会中断执行流程。
  • throw关键字将允许您抛出一个异常(这将会中断执行流程并可以在catch块中捕获)。
  • 方法原型中的throws关键字用于指定您的方法可能会抛出指定类型的异常。当你检查异常(你必须处理的异常)时,它是非常有用的,你不想在当前的方法中捕获异常。

资源:


在另一方面,你应该接受一些答案。如果有人遇到同样的问题并找到问题,他/她会很乐意直接看到问题的正确答案。

+0

您没有解决* throws *子句。我需要你这样做,以便当他接受我的答案时,我可以将他推荐给你:) – Dave 2010-09-25 18:24:33

+0

@Dave,将做:P – 2010-09-25 18:30:01

5

Try/catch和throw子句用于不同的目的。所以它们不是彼此替代的,但它们是互补的。

  1. 如果你扔在你的代码中的一些检查异常,应该在调用层次代码一些try/catch语句内。

  2. 相反,只有在代码(代码或API调用)中有抛出检查异常的throw子句时,才需要try/catch块。

有时候,你可能要抛出异常,如果特殊情况发生,你要在调用代码块来处理,并在某些情况下,处理一些异常catch块,然后再次抛出一个相同或不同的异常呼吁块来处理。

26

如果执行下面的例子,您将会知道Throw和Catch块之间的区别。

总体而言:

捕捉块将处理这个异常

抛出将错误传递给他的调用者。

在以下示例中,在throwsMethod()发生错误,但它是在catchMethod()处理。

public class CatchThrow { 

private static void throwsMethod() throws NumberFormatException { 
    String intNumber = "5A"; 

    Integer.parseInt(intNumber); 
} 

private static void catchMethod() { 
    try { 

     throwsMethod(); 

    } catch (NumberFormatException e) { 
     System.out.println("Convertion Error"); 
    } 

} 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    catchMethod(); 
} 

} 
+0

例如,如果将“private static void throwsMethod()throws NumberFormatException”更改为“私人静态无效throwsMethod()抛出IndexOutOfBoundsException“,它会产生相同的结果。 – 2015-08-23 14:24:59

-1

尝试 - 添加敏感的代码 捕获 - 处理异常 最后 - 始终执行异常是否陷入与否。与try -catch相关联。用于关闭我们在尝试块 中打开的资源throw - 将手动创建的异常切换到JVM。用于抛出自定义的异常 throws - 将异常处理的责任委托给调用者方法或主方法。

3

所有这些关键字try,catch和throw都与java中的异常处理概念有关。例外是执行程序期间发生的事件。异常会破坏应用程序的正常流程。异常处理是一种用于处理异常的机制,以便可以保持正常的应用程序流。 Try-catch块用于处理异常。在try块中,我们编写可能抛出异常的代码,并在catch块中编写处理该异常的代码。 Throw关键字用于显式抛出异常。通常,throw关键字用于抛出用户定义的异常。

欲了解更多详情,请访问Java tutorial for beginners

相关问题