异常类

一、异常的基本概念

java中异常类分为两种:Exception和Error两个子类,且它们都是Throwable的子类;

Exception:程序中可以用try{}        catch(异常类  异常对象名){}       finally{}   进行处理的,finally作为一场的统一出口,不管是否有异常都会执行此语句。


对象多态性中说道,子类的实例化可以直接使用父类的对象进行接收(向上转型)。在异常处理中,也应用了此概念,因try中产生的是一个实例化对象,若又其他异常无法知道的话,则可以最后使用Exception进行捕获。捕获粗的异常(Exception)放在细的异常(NullPiontException)之后,否则编译会出错!

当所有异常处理的方式是一样的时候就可以直接使用Exception进行捕获,当开发比较细的时候,不建议这样使用,需要区别对待。

问题

由对象的多态性可以知道,异常类是Throwsable的子类,既然捕获Eception是最方便的,那么直接捕获Throwable可不可以?

首先这样的做法是可以的,但不利于开发,因为程序中的try只会跑出Exception的子类,而Throwable中不光有Excption还有Error。

Error:一般是JVM错误,在程序中无法处理


二、Throws和Throw关键字

 在定义一个方法时可以使用throws关键字声明,使用throws声明的方法表示此方法不处理异常,而交给方法的调用处进行处理【如果再主方法上用throws,主方法不会处理任何异常,而是交给JVM进行处理,默认方式是使用JVM完成】

 格式: 

   public  返回值类型   方法名称(参数列表) throws  异常类{}

class Math {// 定义除法操作,若果有异常,则交给被调用处处理
	public int div(int i, int j) throws Exception {
		int temp = i / j;// 可能出现异常
		return temp;
	}
}

public class ThrowsDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Math m = new Math();
		try {
			System.out.println("除法运算结果" + m.div(5, 0));// 调用处处理异常
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}
throw关键字:throw的关键字作用是在本程序中抛出一个异常,抛出的时候是一个异常类的实例化对象

class Math {// 定义除法操作,若果有异常,则交给被调用处处理
	public int div(int i, int j) throws Exception {
		System.out.println("计算开始");
		int temp = 0;
		try {
			temp = i / j;// 可能出现异常
			return temp;

		} catch (Exception e) {
			throw e;//把异常的实例化对象抛出,让下面的方法调用处来处理异常
		} finally {
			System.out.println("计算结束");
		}

	}
}

public class ThrowsDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Math m = new Math();
		try {
			System.out.println("除法运算结果" + m.div(5, 0));// 调用处处理异常
		} catch (Exception e) {
			// TODO Auto-generated catch block
			System.out.println("异常产生了" + e);
		}

	}

}
三、RuntimeException和Exception的区别
在java异常处理机制中:
Exception在程序中必须使用try  catch 进行处理

runtimeexcption可以不用try  catch 处理,但是出现异常则将由JVM进行处理



四、自定义异常类

 只需要继承Exception就可以完成自定义异常类,因为在java中提供的都是标准异常类


五、断言功能

在JDK1.4之后,断言某一个程序的结果肯定是正确的,如果执行到断言语句时发现错误时则会提示。

断言格式:

assert  boolean 表达式;

assert  boolean 表达式:详细信息

上一篇:redis集群(一)数据分布理论


下一篇:Oracle复杂查询(三)