Java 中异常处理

异常分为:检查异常和非检查异常

检查异常

(不可避免,必须进行异常处理,否则无法通过编译)意思就是代码打出来以后,系统自动提示你要做异常处理。要么是对这段代码进行try.....catch,要么就是throws exception。除了RuntimeException和它的子类和错误(Error)以外其他的都是检查异常。

非检查异常

(可以避免,不强制必须处理)编译器不会提示你做异常处理,即使在运行时会出现错误,但是他不强制你进行异常处理。RuntimeException和它的子类,以及错误(Error)都是非检查异常。

也可以将异常分为运行时异常和非运行时异常

运行时异常:

RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是非检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。运行时编译器不会检查它

非运行时异常:

RuntimeException以外的异常,类型上都属于Exception类及其子类,必须进行处理,和检查异常基本类似。一般有IOException、SQLException等以及用户自定义的Exception异常。

 异常处理的方法

第一种方法:throws,抛出异常

第二种方法:try...catch

第三种方法:try..catch...catch...

第四种方法:try..catch...finally...(finally里面的代码是一定需要执行的代码)

方法覆盖中的异常:

子类的覆盖方法不能比父类的被覆盖方法抛出更多的异常

例如说

class Super{
	public void m1() throws IOException{
	}
}
class Sub extends Super{
	public void m1() throws IOException{
	}
}

子类Sub继承了父类并重写父类中的m1()方法,此时,如果如果把子类中的抛出异常改为Exception

如下所示:

class Sub extends Super{
	public void m1() throws Exception{	
	}

则程序将报错。

也就是说子类的抛出异常范围应该比父类的小。

message属性与异常追踪:

Exception类中定义了一个message属性,并提供了一个getMessage()方法获得message属性的值,同时提供了一个构造方法对其属性赋值Exception

public class TestException {
	public static void main(String args[]){
		m2();
  	}

	public static void m2(){
		try{
		throw new NullPointerException("this is null");
                //    this is null 就是信息的提示
		}catch(NullPointerException e){
			e.printStackTrace();
		}finally{
			System.out.println("this is finally");
		}
  	}
}

可以查看一下Exception的源码,更清楚。

 

extends Exception 检测异常,当产生时需要异常处理

class MyException extends Exception{
	public MyException(){	
	}
	public MyException(String message){
		super(message);
	}
}
public class TestException {
	public static void main(String args[]){  
  	}
	public static void m1() throws MyException{
		throw new MyException();
  	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值