2015-01-11 128 views
-2

我想了解在Java中检查异常,并有以下查询。Java检查异常

是下列正确的:如果一个方法抛出的任何类型的检查异常,潜在的那个例外必须是

  1. 使用throws关键字声明,或
  2. 由各自抓方法。

如果上述内容是正确的,这是否意味着我需要了解每一个内置到Java的检查异常,以便我知道我的方法是否有可能抛出异常?还是应该尝试编译我的代码,然后根据编译时错误修改我的代码?

回答

0

如果上述内容是正确的,这是否意味着我需要了解内置于Java [...]的每个检查过的异常?

是的,您的陈述是正确的,但没有人希望您在编程时了解所有可能的检查异常。如果你有一个编译器或者更好的IDE,那么你就不必如此。

要么你去来回编译器输出和代码之间,你在你的问题建议,或者如果你违反了规则,你安装一个IDE,比如Eclipse,让你直接通知:

enter image description here

0

,这是否意味着我需要了解是建立在对Java

我假设你使用的是一些IDE(Eclipse的如)每一个检查异常 - 如果没有,你应该得到Ø尽快。然后,IDE几乎不断地编译代码,所以当出现问题时,你会在它附近得到一个红色的下划线,并提示一个工具提示泡泡,告诉你什么是错误的 - 例如“丢失抛出”。

因此,你的第二个假设是基本正确的,它只是发生在幕后:

或者我应该只是尝试基于编译时错误编译我的代码,然后修改我的代码?

所以不,你不需要了解所有的例外。

此外,所有选中的例外延伸到Exception,所以如果您有权访问源代码,则可以检查它们的基础。未检查的例外延伸至RuntimeException

经验法则:如果是I/O,它通常会被检查。这是您遇到的最常见的异常类型。

0

whenever you use a method (whether your own or In-built) if you closely follow its method signature, if the method throws some exception you need to throw/handle it explicitly in your code

这样你就不需要记住所有的异常,你就会知道处理哪些例外情况。

为了让生活方便使用的一些IDE像Eclipse

希望这有助于!

祝你好运!

0

如果上面是正确的

这是...

[...]这是否意味着我需要了解的是内置在每一个检查异常Java,以便我知道我的方法是否有可能产生该异常?还是应该尝试编译我的代码,然后根据编译时错误修改我的代码?

使用IDE!你不需要亲密地知道所有这些。

做什么想检查,但是是层次结构(即,检查javadoc!这应该是一个巴甫洛夫反射);因为异常是类,所以它们相互继承,例如,FileSystemException是java.nio.file的portmanteau例外,用于指示与文件系统相关的问题,并继承IOException。如果你想特别对待它,赶在IOException之前。

作为一般规则,首先捕获更具体的例外

另外,别抓Exception。决不。问题是,RuntimeException,这是未检查的基本例外例外,继承Exception,这意味着如果您捕获Exception您捕获所有未经检查的异常。你想重新抛出未检查:

try { 
    something(); 
} catch (RuntimeException unchecked) { 
    throw unchecked; 
} catch (Exception e) { 
    // deal with e 
} 
0

是你需要知道每exception..however如果你知道超类异常的比你的U并不需要知道它的子类...用于如.FileReader抛出一个名为FileNotFoundException的异常由于FileNotFoundException是IOException的一个子类,因此我们可以在抛出列表中指定IOException并使上述程序无编译器错误。