java异常处理分类有哪些



java异常处理分类有哪些。哪些异常需要手动处理,哪些异常会自动处理。什么是java空指针异常。

Java中采用了强制异常捕捉机制,这样一方面提高了程序的可靠性,不过有时候也带来一些麻烦。比如:
int i= Integer.parseInt(“33″);
这个我知道它不可能会抛出异常,但是不捕捉异常的话就过不了编译这关,当然这个代码没有意义的。

Java中所有异常或者错误都继承Throwable:
1.Error:所有都继承自Error,表示致命的错误,比如内存不够,字节码不合法等。

2.Exception:这个属于应用程序级别的异常,这类异常必须捕捉。
3.RuntimeException:奇怪RuntimeException继承了Exception,而不是直接继Error, 这个表示系统异常,比较严重。

java中异常分两类,一类是需要处理的(Checked exceptions), 一类是不需要处理的(Unchecked exceptions)。
是否需要处理是指:你程序中抛出的异常客户端是否需要处理,是否有能力处理。

以用户注册来说明,每个用户有一个唯一的注册名,当用户提交注册信息时,从后台检测这个注册名已经存在,违反唯一性,这时候你可以抛出一个checked exception,上层程序可以捕获这个异常,并将信息提示给用户,让用户换个注册名;
如果在用户提交注册信息时,正好你的数据库宕掉了,无法对数据进行存取,这时候你就要抛出unchecked exception(例如你自定义的继承于runtimeexception的异常),这个异常上层程序无须捕获,或者说捕获了除了继续向外抛以外也无能为力。
如果一方法有可能引发Exception子类对象表示的异常,那就应该在此方法中捕获处理这些异常或抛弃这些异常。如IOException类和FileNotFoundException类的异常。

但是,RuntimeException类的子类表示的异常是无需这样做的,而我们遇到的很多异常都是RuntimeException类的子类表示的异常。


java异常处理实例源码:

package cn.bjsxt.exception.test;
import java.io.File;
import java.io.FileNotFoundException;

public class TestException {
public static void main(String[] args) {
// int i = 1/0;
// Computer c = null;
// if(c!=null){
// c.start(); //对象是null,调用了对象方法或属性!
// }

// String str = “1234abcf”;
// Integer i = new Integer(str);

// try{
// Thread.sleep(3000);
// }catch(Exception e){
// e.printStackTrace();
// }finally{
// System.out.println(“aaa”);
// }

File f = new File(“c:/tt.txt”);
if (!f.exists()) {
try {
throw new FileNotFoundException(“File can’t be found!”);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
}

class Computer{
void start(){
System.out.println(“计算机启动!”);
}
}