你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Java专栏
异常的其他概念————throw、throws、Exception、RuntimeException、断言
 
假设定义一个除法的方法div(),对于除法来说:有可能出现异常,有可能不出现异常。所以对于这样的方法来说,最好使用throws关键字进行声明。一旦出现了异常,则交给调用处处理。
因为div()方法使用了throws关键字声明。所以调用此方法的时候,必须进行异常处理。
[java] 
class Math{  
    public int div(int i,int j) throws Exception{   // 定义除法操作,如果有异常,则交给被调用处处理  
        int temp = i / j ;  // 计算,但是此处有可能出现异常  
        return temp ;  
    }  
};  
public class ThrowsDemo01{  
    public static void main(String args[]){  
        Math m = new Math() ;       // 实例化Math类对象  
        try{  
            System.out.println("除法操作:" + m.div(10,2)) ;  
        }catch(Exception e){  
            e.printStackTrace() ;   // 打印异常  
        }  
    }  
};  
如果在主方法的声明中使用了throws关键字,则主方法也可以不处理异常了。则将一切异常交给JVM进行处理。
[java]  
class Math{  
    public int div(int i,int j) throws Exception{   // 定义除法操作,如果有异常,则交给被调用处处理  
        int temp = i / j ;  // 计算,但是此处有可能出现异常  
        return temp ;  
    }  
};  
public class ThrowsDemo02{  
    // 在主方法中的所有异常都可以不使用try...catch进行处理  
    public static void main(String args[]) throws Exception{  
        Math m = new Math() ;       // 实例化Math类对象  
        System.out.println("除法操作:" + m.div(10,0)) ;  
    }  
};  
2、throw关键字
 
在异常处理中,try语句中药捕获的是一个异常的对象,那么此异常对象也可以自己抛出。
[java] 
public class ThrowDemo01{  
    public static void main(String args[]){  
        try{  
            throw new Exception("自己抛着玩的。") ;    // 抛出异常的实例化对象  
        }catch(Exception e){  
            System.out.println(e) ;  
        }  
    }  
};  
3、throw与throws应用范例
例如:要设计一个相除的方法,但是在进行操作之前必须打印“计算开始”的信息、结束之后打印“计算结束”的信息。如果有异常的话,则应该吧异常交给被调用处处理。
[java]  
class Math{  
    public int div(int i,int j) throws Exception{   // 定义除法操作,如果有异常,则交给被调用处处理  
        System.out.println("***** 计算开始 *****") ;  
        int temp = 0 ;  // 定义局部变量  
        try{  
            temp = i / j ;  // 计算,但是此处有可能出现异常  
        }catch(Exception e){  
            throw e ;  
        }finally{   // 不管是否有异常,都要执行统一出口  
            System.out.println("***** 计算结束 *****") ;  
        }  
        return temp ;  
    }  
};  
public class ThrowDemo02{  
    public static void main(String args[]){  
        Math m = new Math() ;  
        try{  
            System.out.println("除法操作:" + m.div(10,0)) ;  
        }catch(Exception e){  
            System.out.println("异常产生:" + e) ;  
        }  
    }  
};  
 
4、Exception与RuntimeException的区别
[java]  
public class RuntimeExceptionDemo01{  
    public static void main(String args[]){  
        String str = "123" ;    // 定义字符串,全部由数字组成  
        int temp = Integer.parseInt(str) ; // 将字符串变为int类型  
        System.out.println(temp * temp) ;   // 计算乘方  
    }  
};  
parseInt()方法的定义格式为:
public static int parseInt(String s) throws NumberFormatException
在此方法中明明已经使用了throws关键字抛出异常,为什么不用处理,编译也能通过呢??
 
 
5、自定义异常类
只需要继承Exception就可以完成自定义异常类。
[java]  
class MyException extends Exception{    // 自定义异常类,继承Exception类  
    public MyException(String msg){  
        super(msg) ;    // 调用Exception类中有一个参数的构造方法,传递错误信息  
    }  
};  
public class DefaultException{    
    public static void main(String args[]){  
        try{  
            throw new MyException("自定义异常。") ;    // 抛出异常  
        }catch(Exception e){  
            System.out.println(e) ;  
        }  
    }  
}  
  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089