回答
- 的
try
块将执行一个敏感的代码可以抛出异常 - 每当(捕获的类型)的异常在try块
- 的
finally
块被称为时引发的catch
块将被用于在之后,每隔之后try/catch块。即使未捕获到异常,或者以前的块会中断执行流程。 throw
关键字将允许您抛出一个异常(这将会中断执行流程并可以在catch
块中捕获)。- 方法原型中的
throws
关键字用于指定您的方法可能会抛出指定类型的异常。当你检查异常(你必须处理的异常)时,它是非常有用的,你不想在当前的方法中捕获异常。
资源:
在另一方面,你应该接受一些答案。如果有人遇到同样的问题并找到问题,他/她会很乐意直接看到问题的正确答案。
您没有解决* throws *子句。我需要你这样做,以便当他接受我的答案时,我可以将他推荐给你:) – Dave 2010-09-25 18:24:33
@Dave,将做:P – 2010-09-25 18:30:01
Try/catch和throw子句用于不同的目的。所以它们不是彼此替代的,但它们是互补的。
如果你扔在你的代码中的一些检查异常,应该在调用层次代码一些try/catch语句内。
相反,只有在代码(代码或API调用)中有抛出检查异常的throw子句时,才需要try/catch块。
有时候,你可能要抛出异常,如果特殊情况发生,你要在调用代码块来处理,并在某些情况下,处理一些异常catch块,然后再次抛出一个相同或不同的异常呼吁块来处理。
如果执行下面的例子,您将会知道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();
}
}
例如,如果将“private static void throwsMethod()throws NumberFormatException”更改为“私人静态无效throwsMethod()抛出IndexOutOfBoundsException“,它会产生相同的结果。 – 2015-08-23 14:24:59
尝试 - 添加敏感的代码 捕获 - 处理异常 最后 - 始终执行异常是否陷入与否。与try -catch相关联。用于关闭我们在尝试块 中打开的资源throw - 将手动创建的异常切换到JVM。用于抛出自定义的异常 throws - 将异常处理的责任委托给调用者方法或主方法。
所有这些关键字try,catch和throw都与java中的异常处理概念有关。例外是执行程序期间发生的事件。异常会破坏应用程序的正常流程。异常处理是一种用于处理异常的机制,以便可以保持正常的应用程序流。 Try-catch块用于处理异常。在try块中,我们编写可能抛出异常的代码,并在catch块中编写处理该异常的代码。 Throw关键字用于显式抛出异常。通常,throw关键字用于抛出用户定义的异常。
欲了解更多详情,请访问Java tutorial for beginners。
其他人已经给出了全面的答案,但如果您需要更多信息,Oracle Java教程始终是一个很好的资源。以下是Exceptions的Java教程,其中详细介绍了您的所有问题; https://docs.oracle.com/javase/tutorial/essential/exceptions/index.html
- 1. Java中的throw和throws之间的区别?
- 2. 在java中TryCatch块
- 3. throw和console.log与catch中的承诺的区别
- 4. java中+ =和= +的区别?
- 5. 在java中`InputStream``DataInputStream`和`BufferedInputStream`的区别?
- 6. %(模数)和/(分)在java中的区别?
- 7. throw关键字在Java中
- 8. “throw”关键字和“Write-Error-ErrorAction Stop”之间有什么区别?
- 9. 声明函数作为__attribute __(nothrow)和`throw()`有什么区别?
- 10. `|。有什么区别? `和`|| `在java中?
- 11. !=和=!有什么区别!在Java中?
- 12. 在java中x ++和++ x有区别吗?
- 13. Java:.nextLine()和.nextDouble()的区别
- 14. Java getProgress()和getNewValue()的区别
- 15. Java中的图像和BufferedImage的区别
- 16. Java中的StringBuilder和C#的区别
- 17. java中addItem和insertItemAt方法的区别
- 18. java中char(int)和int的区别
- 19. Java中mouseListener和mouseMotionListener的区别?
- 20. Scala和Java中的RoundingMode.HALF_UP区别
- 21. java rx中Observable.defer和Observable.create的区别
- 22. Java中Set和HashSet的区别
- 23. Java中= +和+ =之间的区别?
- 24. Java中this.variable和variable之间的区别
- 25. Java中{}和{{}}初始化的区别
- 26. java中Executor和ExecutorCompletionService之间的区别
- 27. Java EE中JspWriter和PrintWriter的区别?
- 28. tryCatch和ggplot
- 29. java项目和java包的区别
- 30. java bean和java类的区别?
@ user393043,您是否查阅了文档并且仍然感到困惑?或者你甚至没有看过第一个文档? – 2010-09-25 18:08:53
Docs?什么文件? :-P – 2010-09-25 18:09:49
可能重复[抛出或尝试捕获](http://stackoverflow.com/questions/3203297/throws-or-try-catch) – 2010-09-25 18:23:21