*异常

现实生活中万物在发展和变化会出现各种各样不正常的现象。

1:例如:人的成长过程中会生病。

|——

  |——不可治愈(癌症晚期)

  |——可治愈

    |——小病自行解决(上火,牙痛)

    |——去医院(感冒,发烧)


1.java的异常体系包含在java.lang这个包默认不需要导入。
2.java异常体系

    |——Throwable  (实现类描述java的错误和异常)
        |——Error (错误)一般不通过代码去处理。
        |——Exceprion (异常)
            |——RuntimeException (运行时异常)
            |——非运行时异常


1. toString() 输出该异常的类名

2. getMessage() 输出异常的信息,需要通过构造方法传入异常信息(例如病态信息)

3. printStackTrace() 打印栈信息

 


异常自行处理

class Demo {

	public static void main(String[] args) {
		div(2, 0);
		System.out.println("over");
	}

	public static void div(int x, int y) {

		try {
			System.out.println(x / y); // 可能出现异常的语句,放入try中。
		} catch (ArithmeticException e) { // 进行异常匹配,
             //异常信息
			System.out.println(e.toString());
			    System.out.println(e.getMessage());	
		 e.printStackTrace();
			System.out.println("除数不能为0");
		}
		System.out.println("除法运算");
	}
}

 

总结

  1. 程序中有多个语句可能发生异常,可以都放在try语句中。并匹配对个catch语句处理
  2. 如果异常被catch匹配上,接着执行try{}catch(){} 后的语句。没有匹配上程序停止。
  3. try中多个异常同时出现,只会处理第一条出现异常的一句,剩余的异常不再处理。

 多个异常

多个catch语句之间的执行顺序。

    是进行顺序执行,从上到下。
    如果多个catch 内的异常有子父类关系。
        子类异常在上,父类在最下。编译通过运行没有问题
        父类异常在上,子类在下,编译不通过。(因为父类可以将子类的异常处理,子类的catch处理不到)。
        多个异常要按照子类和父类顺序进行catch


 

 

抛出处理

throw和throws的区别
    1.相同:都是用于做异常的抛出处理的。
    2.不同点:
        1.使用的位置: throws 使用在函数上,throw使用在函数内
        2.后面接受的内容的个数不同:
            1.throws 后跟的是异常类,可以跟多个,用逗号隔开。
            2.throw 后跟异常对象。


 

 

总结

 

1.try语句不能单独存在,可以和catch、finally组成 try...catch...finally、try...catch、try...finally三种结构。
2.catch语句可以有一个或多个,finally语句最多一个,try、catch、finally这三个关键字均不能单独使用。
3.try、catch、finally三个代码块中变量的作用域分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。
4.多个catch块时候,Java虚拟机会匹配其中一个异常类或其子类,就执行这个catch块,而不会再执行别的catch块。(子类在上,父类在下)。
5.throw语句后不允许有紧跟其他语句,因为这些没有机会执行。
6.如果一个方法调用了另外一个声明抛出异常的方法,那么这个方法要么处理异常,要么声明抛出。


 

 

 

 

 

 

posted @ 2015-10-20 16:44  沐风先生  阅读(126)  评论(0编辑  收藏  举报