excetion是所有异常的总称,就是根异常:
写代码的try{}catch{}语句的时候,如果有多个exception直接抛出一个exception就能将所有的exception抛出了,你也可以将所有的不同exception依依抛出。
runtimeexcetion是具体的某一个异常:
RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。
可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。
RuntimeException是由于你程序设计的有漏洞`比如 1/0~的情况~ 正确设计不会出现的` 一般不捕获或处理~
下面是例子来说明
- /*
- 有一个圆形和长方形。
- 都可以获取面积。对于面积如果出现非法的数值,视为是获取面积出现问题。
- 问题通过异常来表示。
- 现有对这个程序进行基本设计。
- */
- class NoValueException extends RuntimeException
- //这里继承了RuntimeException,下面就不用再throws NoValueException了。
- {
- NoValueException(String message)
- {
- super(message);
- }
- }
- interface Shape
- {
- void getArea();
- }
- class Rec implements Shape
- {
- private int len,wid;
- Rec(int len ,int wid)//这里的throws NoValueException可以不用标识了
- {
- if(len<=0 || wid<=0)
- throw new NoValueException("出现非法值");
- this.len = len;
- this.wid = wid;
- }
- public void getArea()
- {
- System.out.println(len*wid);
- }
- }
- class Circle implements Shape
- {
- private int radius;
- public static final double PI = 3.14;
- Circle(int radius)//这里的throws NoValueException也可以不用标识了
- {
- if(radius<=0)
- throw new NoValueException("非法");
- this.radius = radius;
- }
- public void getArea()
- {
- System.out.println(radius*radius*PI);
- }
- }
- //因为继承了RuntimeException,主函数里也就不用再try catch处理了。
- //程序出现非法值以后,程序直接结束。
- class ExceptionTest1
- {
- public static void main(String[] args)
- {
-
- Rec r = new Rec(3,4);
- r.getArea();
- Circle c = new Circle(-8);
- System.out.println("over");
-
- }
- }
复制代码 |