当前位置:  开发笔记 > 编程语言 > 正文

除RuntimeException之外的异常

如何解决《除RuntimeException之外的异常》经验,为你挑选了2个好方法。

除了Java中的RuntimeException之外,是否有可能发生异常?谢谢.



1> OscarRyz..:

是的,有三种.

检查异常

由于环境中的故障​​,编译器会告诉您何时可能抛出它们.

如果程序可以使用它,它们应该被捕获,否则最好让它们离开.

他们中的大多数都是继承自

java.lang.Exception

或来自

java.lang.Throwable

虽然从前者继承是更好的.

例如:

java.io.IOException

表示发生某种I/O异常的信号.此类是由失败或中断的I/O操作产生的一般异常类.

错误

这些都是特殊的例外情况.他们不应该被抓,当他们出现意味着什么真的很糟糕刚刚发生的.

所有这些都继承自

java.lang.Error

例如:

java.lang.OutOfMemoryError

当Java虚拟机因内存不足而无法分配对象时抛出,垃圾收集器不再提供更多内存.

要么

java.lang.StackOverflowError

在发生堆栈溢出时抛出,因为应用程序过于严重.

RuntimeExceptions

用于识别程序员故障,而不是资源故障.

编码时可以"正常"避免运行时异常.如果你有一个最有可能你做错了什么.

有时会捕获运行时异常,但是,除非您确切知道自己在做什么以及为什么,否则捕获它们是一种不好的做法(再次,除非这正是您所需要的)

他们继承自己

java.lang.RuntimeException 

例如

java.lang.ArrayIndexOutOfBoundsException

抛出以指示已使用非法索引访问数组.索引为负数或大于或等于数组的大小

要么

java.lang.NullPointerException

当应用程序在需要对象的情况下尝试使用null时抛出

关于最后两个,大多数时候,可以通过仔细编程并了解程序的状态来避免它们(这个数组有5个元素吗?为什么我应该尝试访问-1或6个.这个引用是否为null?我为什么要调用null.toString())

虽然我和那些声称应该抓住所有NPE的人争论不休.那么我能说什么呢.



2> Warrior..:

java.lang包定义了以下不是运行时异常的标准异常类:

ClassNotFoundException:抛出此异常以指示无法找到要加载的类.

CloneNotSupportedException:当为未实现Cloneable接口且因此无法克隆的对象调用clone()方法时,抛出此异常.

异常:抛出此异常的相应子类以响应在虚拟机级别检测到的错误.如果程序定义了自己的异常类,它们应该是Exception类的子类.

IllegalAccessException:当程序试图动态加载类时(即,使用Class类的forName()方法,或ClassLoader类的findSystemClass()或loadClass()方法)和当前正在执行的方法,抛出此异常无权访问指定的类,因为它在另一个包中而不是公共的.当程序尝试创建类的实例(即,使用Class类的newInstance()方法)时,也会抛出此异常,该类没有调用方可访问的零参数构造函数.

InstantiationException:抛出此异常是为了响应尝试使用Class类的newInstance()方法实例化抽象类或接口.

InterruptedException:抛出此异常以表示正在休眠,等待或以其他方式暂停的线程已被另一个线程中断.

NoSuchFieldException:无法找到指定的变量时抛出此异常.此异常是Java 1.1中的新增内容.

NoSuchMethodException:无法找到指定的方法时抛出此异常.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有