异常

来源:互联网 发布:对网络语言的看法800字 编辑:程序博客网 时间:2024/05/17 21:44
/*
 * 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());
}
}
}

0 0
原创粉丝点击