您的位置:首页 > 其它

异常

2015-09-24 16:26 337 查看
/*

* 1.自定义异常

* 需求:在本程序中,对于除数是-1也视为错误,是无法进行运算的

* 那么就需要对这个问题进行自定义的描述

* 当在函数内部出现了throw 抛出异常对象,那么就必须给对应的处理动作

* 要么:try,catch

* 要么:throws给调用者处理

*

* 2.自定义异常

* 必须是自定义类继承Exception

* 继承Exception原因:因为异常类和异常对象都被抛出

* 他们都具备可抛性,这个可抛性是throwable这个体系中独有的特点

*

* 只有这个体系中的类和对象可以被throw 和throws抛出

*

* 注:throws 和throw区别

* throws定义在函数上,throw定义在函数内

*

* 3.对于RuntimeException及其子类异常,

* 无论在函数内throw抛异常,函数上可以不用声明,编译一样通过

* 还是函数上throws抛出异常,调用者可以不用进行处理,编译一样通过

* 运行时异常之所以不处理,需要让程序停掉,给程序员明确指示要改代码

*

* 自定义异常:如果该异常的发生无法进行后续程序

* 就让自定义异常继承RuntimeException

*

* 4.对于异常分两种:

* 1)编译时被检测的异常

* Exception,如果函数中throw new Exception(),则函数上要有throws Exception()或者try catch(必须要有问题才叫解决),

* 调用者可以throws Exception()或者内部try ,catch捕获

* 2)编译时不被检测的异常(运行时异常,RuntimeException以及其子类)

*

*

*/

public class DefineException extends Exception {

private int num;

public DefineException() {

// TODO Auto-generated constructor stub

}

DefineException(String msg,int num){

super(msg);

this.num=num;

}

public int getNum(){

return num;

}

//******************************************************

public class DemoException {

public static int div(int a,int b) throws DefineException{

if(b<0){

throw new DefineException("出现了负数",b);

}

return a/b;

}

public static void main(String[] args) {

try {

int x=
div(4,-1);

System.out.println(x);

}

//这里捕获 throw new DefineException("出现了负数",b)对象, 也即 e

catch (DefineException e) {

// TODO Auto-generated catch block

//System.out.println(e.toString());

e.printStackTrace();

System.out.println("错误的负数是"+e.getNum());

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: