我知道每个java类都应该扩展Throwable类,以便可以处理异常。这是通过以下方式完成的:
public class Test extends Throwable
或
public class Test throws Throwable?
答案 0 :(得分:3)
原始类型或类不扩展的对象Throwable不能作为异常抛出。
解释:
throw 3;
不起作用,因为3是基本类型。
throw new String();
无效,因为String
未展开Throwable
。
throw new RuntimeException();
有效,因为RuntimeException
是Throwable
的子类。
答案 1 :(得分:0)
当一个类扩展了Throwable时,该类是Throwable的子类,你可以在代码中的任何地方将这个类作为Throwable抛出。
class MyCoolThrowable extends Throwable{
try {
//... some error ...
} catch (MyCoolThroable t) {
//... handle the throwable
}
}
将 throws Throwable 添加到构造函数或方法中,以便调用构造函数/方法的代码将被强制使用try-catch
void mySweetMethod() throws Throwable {
//...
}
try {
mySweetMethod();
} catch(Throwable t) {
//... handle it here
}
我认为这澄清了你所读到的内容:)
答案 2 :(得分:0)
我知道每个java类都应该扩展Throwable类,以便可以处理异常。
不,有人 撒谎 给你。
要处理异常,您需要记住两件事:
如果它是已检查异常,那么如果没有try...catch
块包装狡猾的代码,或者如果您没有声明,则该类将拒绝编译抛出异常。
try {
File f = new File("Foo.txt");
} catch (FileNotFoundException f) {
System.out.println("File doesn't exist!");
}
或:
public void doDodgyStuffWithFile throws FileNotFoundException { }
如果是未经检查的异常,那么您不会因为没有捕获狡猾的代码而导致编译时失败,但您可能会获得运行时异常从它。
String input = scanner.nextLine();
System.out.println(Integer.parseInt(input));
如果您投掷或捕获例外,尽可能具体。不要放弃抛出/抓住{ {1}}和never catch a Throwable
。