例如,IOException 是常用的已检查异常,而 RuntimeException 是未检查异常。在阅读其余部分之前,您可以查看Java 异常层次图。
创新互联-专业网站定制、快速模板网站建设、高性价比赣州网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式赣州网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖赣州地区。费用合理售后完善,十载实体公司更值得信赖。
如果可以正确处理异常,则应将其捕获,否则应将其抛出。
在下面的代码中,try 块中声明的字符串s 不能在catch 子句中使用。代码没有通过编译。
try {
File file = new File("path");
FileInputStream fis = new FileInputStream(file);
String s = "inside";
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println(s);
}
原因是您不知道在 try 块中的哪个位置会抛出异常。很可能在声明对象之前抛出异常。对于这个特定的示例,这是正确的。
他们实际上抛出了不同的异常。这是JDK的问题。它们是由不同的开发人员开发的,因此不值得过多思考。
Integer.parseInt(null);
// throws java.lang.NumberFormatException: null
Double.parseDouble(null);
// throws java.lang.NullPointerException
这里只是其中的一些。
IllegalArgumentException
ArrayIndexOutOfBoundsException
当条件不满足时,可以在 if 语句中使用它们,如下所示:
if (obj == null) {
throw new IllegalArgumentException("obj can not be null");
答案是肯定的。只要这些异常类可以追溯到类继承层次结构中的同一个超类,您就可以只使用该超类。
答案是肯定的。构造函数是一种特殊的方法。这是一个代码示例。
执行以下操作是合法的:
public static void main(String[] args) {
File file1 = new File("path1");
File file2 = new File("path2");
try {
FileInputStream fis = new FileInputStream(file1);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
FileInputStream fis = new FileInputStream(file2);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
但是为了获得更好的代码可读性,您应该将嵌入的 try-catch 块包装为新方法,然后将方法调用放在 finally 子句中。
public static void main(String[] args) {
File file1 = new File("path1");
File file2 = new File("path2");
try {
FileInputStream fis = new FileInputStream(file1);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
methodThrowException();
}
}
是的,它可以。
有很多像下面这样的时间码段。如果正确处理异常如此重要,为什么开发人员继续这样做?
try {
...
} catch(Exception e) {
e.printStackTrace();
}
忽略很容易。频繁出现并不代表正确。
新闻标题:关于Java异常的十大问题
网页路径:http://www.shufengxianlan.com/qtweb/news8/87508.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联