java中collection集合error和exception的区别

以下试题来自:
填空题Java中的异常对象是Error类或Exception类的对象,这两类对象中______类的对象不会被Java应用程序捕获和抛出。 Error
为您推荐的考试题库
你可能感兴趣的试题
1.填空题 键盘2.填空题 e.printStackTrace()3.填空题 抛出异常4A.catch(FilelnpuStueam fis)B.printStackTrace()C.catch(IOException e)D.System.out.printIn(e)5A.FileOutputStremB.ByteArrayOutputStreamC.BufferedOutputStreamD.FileWriter
热门相关试卷
最新相关试卷Java中异常处理机制,Error与Exception有什么区别
每当产生异常后,如果没有程序进行相应的处理,则程序会中断的现象,那么,此时实际上一旦产生一个异常之后,JVM会抛出一个异常类的实例化对象,如果此时使用了try语句进行捕获的话,则可以进行异常处理,如果没有的话,则交给JVM进行处理,当try语句捕获到了异常之后,会与catch中的异常类型进行匹配,如果匹配成功,则使用此catch语句进行处理。
应用:简单的应用,就是在所有throws关键字的地方加入try...catch
如果按照一个标准做法的话,try、catch、finally、throw、thorws关键字应该一起使用。
JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发
NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用
throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。
class Test{
&&&&&&&&&public
int devide(int x ,int y) throws Exception{&
&&&&&&&&&&&&&&&&&&int
result = x/y;
&&&&&&&&&&&&&&&&&&return
&&&&&&&&&}&&&&&&&&&
class TestException{
&&&&&&&&&public
static void main(String[] args){
&&&&&&&&&&&&&&&&&&try{
&&&&&&&&&&&&&&&&&&&&&&&&&&&new
Test().devide(3,0);
&&&&&&&&&&&&&&&&&&}catch(Exception
&&&&&&&&&&&&&&&&&&&&&&&&&&&System.out.println(e.getMessage());//虽然Exception除了Constructor之外没有其它的函数,
//但它继承了Throwable类.
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&System.out.println("Program
running here");
&&&&&&&&&}
当编写Test class不知道它是否抛出异常时,可以在devide methods方法后添加 throws Exception
就可以..而在TestException中必须处理抛出的异常.
如果自己定义异常类,必须继承Exception,也就是它的子类.
class Test{
&&&&&&&&&public
int devide(int x ,int y) throws Exception{&
&&&&&&&&&&&&&&&&&&if(y
&&&&&&&&&&&&&&&&&&&&&&&&&&&throw
DevideMyMinusException("devide
&&&&&&&&&&&&&&&&&&int
result = x/y;
&&&&&&&&&&&&&&&&&&return
&&&&&&&&&}&&&&&&&&&
class DevideMyMinusException extends Exception{
&&&&&&&&&&&&public
DevideMyMinusException (String msg){
&&&&&&&&&&&&&&&&&&&&&super(msg);&
//调用父类(Exception)的Construtor,主函数getMessage()输出自定义的异常:"devide
&&&&&&&&&&&&}
可以抛出多个异常类.
class Test{
&&&&&&&&&public
int devide(int x ,int y) throws
ArithmeticException,DevideMyMinusException{&
&&&&&&&&&&&&&&&&&&if(y
&&&&&&&&&&&&&&&&&&&&&&&&&&&throw
new DevideMyMinusException("devide
&&&&&&&&&&&&&&&&&&int
result = x/y;
&&&&&&&&&&&&&&&&&&return
&&&&&&&&&}&&&&&&&&&
class DevideMyMinusException extends Exception{
&&&&&&&&&&&&public
DevideMyMinusException (String msg){
&&&&&&&&&&&&&&&&&&&&&super(msg);&
&&&&&&&&&&&&}
class TestException{
&&&&&&&&&public
static void main(String[] args){
&&&&&&&&&&&&&&&&&&try{
&&&&&&&&&&&&&&&&&&&&&&&&&&&new
Test().devide(3,-1);
&&&&&&&&&&&&&&&&&&}catch(ArithmeticException
&&&&&&&&&&&&&&&&&&&&&&&&&&&System.out.println("program
running into ArithmeticException ");
&&&&&&&&&&&&&&&&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&&&&&&&&&&&}catch(DevideMyMinusException
&&&&&&&&&&&&&&&&&&&&&&&&&&&System.out.println("program
running into DevideMyMinusException");
&&&&&&&&&&&&&&&&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&&&&&&&&&&
}catch(Exception e){
&&&&&&&&&&&&&&&&&&&&&&&&&&&System.out.println(e.getMessage)
&&&&&&&&&&&&&&&&&&)finally{
&&&&&&&&&&&&&&&&&&&&&&&&&&&System.out.println("finally
running");//不管程序发生异常没有,finally代码块都要执行.
&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&System.out.println("Program
running here");
&&&&&&&&&}
1.程序根据异常类型的匹配.自动进入相应的catch语句.Exception应放在其它异常语句后,因为他们都继承Exception
,其它异常要放在后面,就没有什么意义了.
2.try {}里有一个return语句,那么紧跟在这个try后的finally
{}里的code会不会被执行,什么时候被执行,在return前还是后? 会执行,而且在return 前执行.
3.什么时候finally里的代码不会执行呢? 当出现System.exit(0);时,它不会执行,程序会退出.
Error和Exception的区别:
Java中的Error和Exception都是来之Throwable 这个Class的,是他的SubClass,
Error:是系统中的错误,程序员是不能改变,处理的,在程序编译的时候出现的错误.只有通过修改程序才能修正Error.
Exception:是在程序运行的时候捕捉的错误,是可以处理的异常.&&&&
&语法是:try{}
catch(Exception
名字){}&&&&&&&&&&&&&&&&&
&&&&&&&&&&finally
&&&&&&&&&&&&&&&&&
{进行资源的清理工作:&
比如关闭打开的文件:&&&
删除临时的文件;&& ....}
Exception:它也分两种:RuntimeException(是经常出现的错误可以不catch)和其他Exception(是必须要catch的,这样程序才能继续,像某个方法里面有throw
IoException).
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。\ Java面试题:解释Java中的异常处理流程
Java面试题:解释Java中的异常处理流程
移动开发工程师
今天开始,感谢时间!每周一篇,深度好文
作者的热门手记
在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出)。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。
Throwable: 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。
Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。这些错误是不可查的,因为它们在应用程序的控制和处理能力之 外,而且绝大多数是程序运行时不允许出现的状况。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。在 Java中,错误通过Error的子类描述。
Exception(异常):是程序本身可以处理的异常。Exception 类有一个重要的子类 RuntimeException。RuntimeException 类及其子类表示“JVM 常用操作”引发的错误。例如,若试图使用空值对象引用、除数为零或数组越界,则分别引发运行时异常(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException。
注意:异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。
相关标签:
请登录后,发表评论
评论(Enter+Ctrl)
评论加载中...
评论加载中...
Copyright (C)
All Rights Reserved | 京ICP备 号-2Java中Error与Exception的区别_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Java中Error与Exception的区别
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢JAVA(19)
Error类和Exception类都继承自Throwable类。
Error的继承关系:
Exception的继承关系:
二者的不同之处:
Exception:
1.可以是可被控制(checked) 或不可控制的(unchecked)。
2.表示一个由程序员导致的错误。
3.应该在应用程序级被处理。
1.总是不可控制的(unchecked)。
2.经常用来用于表示系统错误或低层资源的错误。
3.如何可能的话,应该在系统级被捕捉。
Java 中定义了两类异常:
1) Checked exception: 这类异常都是Exception的子类 。异常的向上抛出机制进行处理,假如子类可能产生A异常,那么在父类中也必须throws A异常。可能导致的问题:代码效率低,耦合度过高。
2) Unchecked exception: 这类异常都是RuntimeException的子类,虽然RuntimeException同样也是Exception的子类,但是它们是非凡的,它们不能通过client code来试图解决,所以称为Unchecked exception 。
Java 中异常类的继承关系图:
常见的几种如下:
NullPointerException - 空指针引用异常
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递非法参数异常。
ArithmeticException - 算术运算异常
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常
NegativeArraySizeException - 创建一个大小为负数的数组错误异常
NumberFormatException - 数字格式异常
SecurityException - 安全异常
UnsupportedOperationException - 不支持的操作异常
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
操作异常:SQLException
输入输出异常:IOException
方法未找到异常:NoSuchMethodException
java.lang.AbstractMethodError
抽象方法错误。当应用试图调用抽象方法时抛出。
java.lang.AssertionError
断言错。用来指示一个断言失败的情况。
java.lang.ClassCircularityError
类循环依赖错误。在初始化一个类时,若检测到类之间循环依赖则抛出该异常。
java.lang.ClassFormatError
类格式错误。当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。
java.lang.Error
错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。
java.lang.ExceptionInInitializerError
初始化程序错误。当执行一个类的静态初始化程序的过程中,发生了异常时抛出。静态初始化程序是指直接包含于类中的static语句段。
java.lang.IllegalAccessError
违法访问错误。当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。
java.lang.IncompatibleClassChangeError
不兼容的类变化错误。当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常。一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下,容易引发该错误。
java.lang.InstantiationError
实例化错误。当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常.
java.lang.InternalError
内部错误。用于指示Java虚拟机发生了内部错误。
java.lang.LinkageError
链接错误。该错误及其所有子类指示某个类依赖于另外一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况。
java.lang.NoClassDefFoundError
未找到类定义错误。当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误。
java.lang.NoSuchFieldError
域不存在错误。当应用试图访问或者修改某类的某个域,而该类的定义中没有该域的定义时抛出该错误。
java.lang.NoSuchMethodError
方法不存在错误。当应用试图调用某类的某个方法,而该类的定义中没有该方法的定义时抛出该错误。
java.lang.OutOfMemoryError
内存不足错误。当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。
java.lang.StackOverflowError
堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。
java.lang.ThreadDeath
线程结束。当调用Thread类的stop方法时抛出该错误,用于指示线程结束。
java.lang.UnknownError
未知错误。用于指示Java虚拟机发生了未知严重错误的情况。
java.lang.UnsatisfiedLinkError
未满足的链接错误。当Java虚拟机未找到某个类的声明为native方法的本机语言定义时抛出。
java.lang.UnsupportedClassVersionError
不支持的类版本错误。当Java虚拟机试图从读取某个类文件,但是发现该文件的主、次版本号不被当前Java虚拟机支持的时候,抛出该错误。
java.lang.VerifyError
验证错误。当验证器检测到某个类文件中存在内部不兼容或者安全问题时抛出该错误。
java.lang.VirtualMachineError
虚拟机错误。用于指示虚拟机被破坏或者继续执行操作所需的资源不足的情况。
java.lang.ArithmeticException
算术条件异常。譬如:整数除零等。
java.lang.ArrayIndexOutOfBoundsException
数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。
java.lang.ArrayStoreException
数组存储异常。当向数组中存放非数组声明类型对象时抛出。
java.lang.ClassCastException
类造型异常。假设有类A和B(A不是B的父类或子类),O是A的实例,那么当强制将O构造为类B的实例时抛出该异常。该异常经常被称为强制类型转换异常。
java.lang.ClassNotFoundException
找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。
java.lang.CloneNotSupportedException
不支持克隆异常。当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常。
java.lang.EnumConstantNotPresentException
枚举常量不存在异常。当应用试图通过名称和枚举类型访问一个枚举对象,但该枚举对象并不包含常量时,抛出该异常。
java.lang.Exception
根异常。用以描述应用程序希望捕获的情况。
java.lang.IllegalAccessException
违法的访问异常。当应用试图通过反射方式创建某个类的实例、访问该类属性、调用该类方法,而当时又无法访问类的、属性的、方法的或构造方法的定义时抛出该异常。
java.lang.IllegalMonitorStateException
违法的监控状态异常。当某个线程试图等待一个自己并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时,抛出该异常。
java.lang.IllegalStateException
违法的状态异常。当在Java环境和应用尚未处于某个方法的合法调用状态,而调用了该方法时,抛出该异常。
java.lang.IllegalThreadStateException
违法的线程状态异常。当县城尚未处于某个方法的合法调用状态,而调用了该方法时,抛出异常。
java.lang.IndexOutOfBoundsException
索引越界异常。当访问某个序列的索引值小于0或大于等于序列大小时,抛出该异常。
java.lang.InstantiationException
实例化异常。当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常。
java.lang.InterruptedException
被中止异常。当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。
java.lang.NegativeArraySizeException
数组大小为负值异常。当使用负数大小值创建数组时抛出该异常。
java.lang.NoSuchFieldException
属性不存在异常。当访问某个类的不存在的属性时抛出该异常。
java.lang.NoSuchMethodException
方法不存在异常。当访问某个类的不存在的方法时抛出该异常。
java.lang.NullPointerException
空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等。
java.lang.NumberFormatException
数字格式异常。当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常。
java.lang.RuntimeException
运行时异常。是所有Java虚拟机正常操作期间可以被抛出的异常的父类。
java.lang.SecurityException
安全异常。由安全管理器抛出,用于指示违反安全情况的异常。
java.lang.StringIndexOutOfBoundsException
字符串索引越界异常。当使用索引值访问某个字符串中的字符,而该索引值小于0或大于等于序列大小时,抛出该异常。
java.lang.TypeNotPresentException
类型不存在异常。当应用试图以某个类型名称的字符串表达方式访问该类型,但是根据给定的名称又找不到该类型是抛出该异常。该异常与ClassNotFoundException的区别在于该异常是unchecked(不被检查)异常,而ClassNotFoundException是checked(被检查)异常。
java.lang.UnsupportedOperationException
不支持的方法异常。指明请求的方法不被支持情况的异常。
  今天在使用两个BigDecimal类型的数字做除法运算时,出现了一个如下的异常信息:
1 java.lang.ArithmeticException: Non-terminati no exact representable decimal result
  上网查了一下这个异常的,找到了原因所在:通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常:java.lang.ArithmeticException: Non-terminati no exact representable decimal result.
  解决的办法就是给divide方法设置精确的小数点,如:divide(xxxxx,2)。
原文链接:/art/649.htm
&&http://blog.csdn.net/u/article/details/
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:21686次
排名:千里之外
原创:55篇
转载:33篇
(5)(67)(16)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'

我要回帖

更多关于 cookie和session区别 的文章

 

随机推荐