package com.ceac.deng; public class T10Exception { public static void main(String[] args) { Number number = new Number(); try { number.divided(2, 0); } catch (A e) { // TODO Auto-generated catch block System.out.println(e.getMessage()); e.printStackTrace(); } catch (B e) { // TODO Auto-generated catch block System.out.println(e.getMessage()); e.printStackTrace(); }finally{ System.out.println("finally"); } } } //异常A class A extends Exception{ public A(String message) { super(message); } } //异常B class B extends Exception{ public B(String message) { super(message); } } class Number { public int divided(int x, int y) throws A, B { if (y < 0) { throw new A("输入的除数不能小于0"); } if (y == 0) { throw new B("输入的除数不能为0"); } return x / y; } }
- [总结]
- 1.自定义异常:
- class 异常类名 extends Exception
- {
- public 异常类名(String msg)
- {
- super(msg);
- }
- }
- 2.标识可能抛出的异常:
- throws 异常类名1,异常类名2
- 3.捕获异常:
- try{}
- catch(异常类名 y){}
- catch(异常类名 y){}
- 4.方法解释
- getMessage() //输出异常的信息
- printStackTrace() //输出导致异常更为详细的信息
- */
如果jdk里面没有提供的异,我们就要自己写.我们常用的类ArithmeticException,NullPointerException,NegativeArraySizeException,ArrayIndexoutofBoundsException,SecurityException这些类,都是继承着RuntimeException这个父类,而这个父类还有一个父类是Exception.那么我们自己写异常类的时候,也是继承Exception这个类的.
实践:
class MyException extends Exception { //继承了Exception这个父类
private int detail;
MyException(int a) {
detail = a;}
public String toString() {
return "MyException[" + detail + "]";
}}
class ExceptionDemo {
static void compute(int a) throws MyException {
System.out.println("调用 compute(" + a + ")");
if(a > 10)
throw new MyException(a);
System.out.println("常规退出 ");
}
public static void main(String args[]) {
try {
compute(1);
compute(20);
} catch (MyException e) {
System.out.println("捕捉" + e); //这样就可以用自己定义的类来捕捉异常了
}}}
如果你开发程序用到好多组件,或其它厂商的东西.那么出现的异常会是莫明其妙的,这样的话会给调试带来很大的不便.往往在开发的过程中会写很多自定义的异常类.
总结:
异常处理机制保证java程序的正常运行,具有较高安全性的重要手段.对于开发良好的编程习惯是非常重要的.