Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2788543
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: Java

2012-07-22 10:23:17

java程序违反java的语义规则时,java虚拟机就会将发生的错误表示为一个异常

违反语义规则包括两种情况:

一种是java类库内置的语义检查 比如 数组越界 引发IndexOutOfBound***ception;访问NULL的对象时会引发NullPointerException

另外一种情况就是JAVA允许程序员扩展这种语法检查,程序员可以自定义异常,并自由选择在何时用throw关键字引发异常,所有的异常都是java.lang.Throwable的子类

 

Error 和 Exception:

java中的Error和Exception都是来自Throwable这个class的,是他的subclass

Error:是系统中的错误,程序员不能改变处理的这是在程序编译的时候出现的错误,只有通过修改程序才能修正Error

Exception:是在程序运行的时候捕捉到的错误,他是可以处理的异常

Exception:它也分两种:RuntimeException(是经常出现的错误可以不catch)和其他Exception(是必须要catch的,这样程序才能继续,像某个方法里面有throw IoException).

一、

* Runtime exceptions:
在定义方法时不需要声明会抛出runtime exception; 在调用这个方法时不需要捕获这个runtime exception; runtime exception是从java.lang.RuntimeException或java.lang.Error类衍生出来的。
* Checked exceptions:
定 义方法时必须声明所有可能会抛出的checked exception; 在调用这个方法时,必须捕获它的checked exception,不然就得把它的exception传递下去; checked exception是从java.lang.Exception类衍生出来的。
二、逻辑上
从逻辑的角度来说,checked exceptions和runtime exception是有不同的使用目的的。checked exception用来指示一种调用方能够直接处理的异常情况。而runtime exception则用来指示一种调用方本身无法处理或恢复的程序错误。

checked exception迫使你捕获它并处理这种异常情况。以java.net.URL类的构建器(constructor)为例,它的每一个构建器都会抛出 MalformedURLException。MalformedURLException就是一种checked exception。设想一下,你有一个简单的程序,用来提示用户输入一个URL,然后通过这个URL去下载一个网页。如果用户输入的URL有错误,构建 器就会抛出一个exception。既然这个exception是checked exception,你的程序就可以捕获它并正确处理:比如说提示用户重新输入。

阅读(794) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~