java异常

异常分为检测异常和非检测异常,
简单来说检测异常就是java语言的开发人员已经确定在调用某个方法时可能会出异常
比如说下面这个,应为文件是自己定的,所以在构造文件读取流的时候就可能会发生文件未找到异常,应为这个是必然发生的

public static void main(String[] args) {
		File f=new File("asdasdsa");
		try {
			FileReader fr=new FileReader(f);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	} 
非检测异常呢,也可叫运行时异常(RuntimeException e),这个异常一般是由于程序员编程失误留下bug造成的,是可以避免的,比如说声明一个变量String s;,忘了给它付初始值了.然后调用s.toString()方法,此时s=null,也就会抛出空指针异常,这是可以避免的 

1.RuntimeException,也就是运行时异常,表示你的代码本身存在BUG,比如你提到的ArrayIndexOutOfBoundsException,数组下标越界,这个属于代码有问题,数组定义的长度不够实际使用,不处理肯定会报错,如果你操作某个模块发现能正常运行,那只是因为代码还没跑到这个错误的地方而已。。控制台一旦报RuntimeException,就必须要处理。。没有例外的。而且,处理RuntimeException,不是try-catch能解决的。。try-catch在这里使用毫无意义。
2.不是RuntimeException,就是编译时异常,异常只有这两种了。比如你在处理文件流时的I/O问题,就属于编译时异常。这个时候用thr{}catch 来捕获或者 throws即可。
3.error,就不在这里赘述了。
RuntimeException翻译过来就是 运行时异常 意思就是 编译时候无法发现只有在运行时才会出现的异常 比如 nullpointException这类 编译器是无法判断的 
try-catch用在这里作用就是代码运行过程中,不会直接在界面产生令人恐慌的错误,因为catch后已经给出产生错误后要输出的结果。但是bug依旧存在。
=====================================================

JAVA运行当中有错时:

不可搞的叫ERROR

可以搞的异常叫exception,又分两类:

可以搞的定的叫checked exception

搞不定(编程错误引起等)的或者不想搞的叫runtime exception

当异常搞不定时,定位为checked exception也没有用,无法处理,只能一级往上抛,所以定义为runtime exception

runtime exception最好不要 catch,因为catch到了也没有用,或者是编程错误引起,反而隐藏错误

捕获异常时,最好不要用异常总管exception,那就捕获了所有,包括运行时异常,而这类基本上是搞不定的或编程错误。。。


============================================

Java 提供了两种Exception 的模式,一种是执行的时候所产生的Exception (Runtime Exception),
另外一种则是受控制的Exception (Checked Exception)。所有的Checked Exception 均从java.lang.Exception 继承而来,而Runtime Exception 则继承java.lang.RuntimeException 或java.lang.Error (实际上java.lang.RuntimeException 的上一层也是java.lang.Exception)。


Checked Exception 中,并不表示这段程序码一定会收到CException,但它的用意在于提醒呼叫者,执行这个method 可能产生的意外,而使用者也必须要能针对这个意外做出相对应的处理方式。

程序在执行的时候,也不见得会真的产生NullPointerException ,这种Exception 叫做runtime exception 也有人称为unchecked exception ,产生Runtime Exception 的method (在这个范例中是method2) 并不需要在宣告method 的时候定义它将会产生哪一种Exception


一般而言,Checked Exception 表示这个Exception 必须要被处理,也就是说程序设计者应该已经知道可能会收到某个Exception(因为要try catch住) ,所以程序设计者应该能针对这些不同的Checked Exception 做出不同的处理。

  而Runtime Exception 通常会暗示着程序上的错误,这种错误会导致程序设计者无法处理,而造成程序无法继续执行下去。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值