我正在尝试理解其他人编写的一些代码,并且不明白在那里如何使用'throws'。这是代码:
rBokeh
据我了解,带有抛出的代码应该以某种方式处理。但是,没有像try catch这样的处理机制。那么抛出的确切目的是什么?我测试了它,没有抛出它返回IOexception。
我的问题是:
答案 0 :(得分:1)
从main抛出的任何内容都会被写入stderr。如果你有一个小程序而你只想退出处理并在控制台上看到堆栈跟踪,如果出现错误,这是处理异常的最简单方法。
IOException是一个经过检查的异常,因此如果您想避免在该方法中捕获它,则必须抛出它。 IOException是Exception的子类,因此throws Exception
包含IOException。
答案 1 :(得分:1)
正如您所说,“应该以某种方式处理带有抛出的代码”。但是,try-catch子句不是处理throws
声明的唯一方法。另一种选择可能是决定您不处理该异常,只需在调用方法中添加throws
子句即可。您可以继续添加这些throws
声明,直到到达main
,在这种情况下,您基本上声明您的程序不会处理错误,并且在发生此类错误时会毫不客气地崩溃。
它不优雅或“不合适”,但嘿,它有效。
答案 2 :(得分:1)
您提供的代码中的某些方法可能会抛出已检查的异常。这些已检查的异常必须由代码处理。为此你有两个选择:
正如您所看到的,代码的作者决定在不处理的情况下从方法中抛出异常。异常将进入主方法,在程序终止之前它将被打印到错误输出。
答案 3 :(得分:1)
如果你指的是main方法中的throws,那么它可以捕获任何可能的异常,而不必使用catch块。
基本上没有什么必须抓住它,因为java本身不会调用main,VM会这样做,如果VM捕获异常,它会将堆栈跟踪打印到stderr System.err.print ()
,然后退出。
这在测试时非常有用,因为您不必担心捕获等等,然后让VM自己完成所有操作。