使用Throwable类

时间:2014-01-20 19:31:46

标签: java exception throwable

我知道每个java类都应该扩展Throwable类,以便可以处理异常。这是通过以下方式完成的:

public class Test extends Throwable

public class Test throws Throwable?

3 个答案:

答案 0 :(得分:3)

  

原始类型或类不扩展的对象Throwable不能作为异常抛出。

解释:

throw 3;

不起作用,因为3是基本类型。

throw new String();

无效,因为String未展开Throwable

throw new RuntimeException();

有效,因为RuntimeExceptionThrowable的子类。

答案 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