Chinaunix首页 | 论坛 | 博客
  • 博客访问: 635621
  • 博文数量: 233
  • 博客积分: 2221
  • 博客等级: 大尉
  • 技术积分: 3184
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-16 14:01
个人简介

瓜瓜派的瓜瓜

文章分类

全部博文(233)

文章存档

2013年(28)

2012年(197)

2011年(8)

分类: Java

2012-01-09 17:07:24

佟强 2009年12月8日声明抛出异常
  • 如果程序员不想在当前方法内处理异常,可以使用throws语句声明将异常抛出到调用方法中。
  • 调用方法也可以将异常再抛给其他调用方法。
  • 如果所有的方法都选择了抛出此异常,最后Java虚拟机将捕获它,输出相关的错误信息,并终止程序的运行。
  • 在异常被抛出的过程中,任何方法都可以捕获异常并进行相应的处理。
捕获异常
  • 捕获异常需要使用try、catch、finally构成的语句块。
  • try语句块中是可能抛出异常的代码,如果一条语句抛出了异常,其后续语句不会继续执行,而是转到catch进行异常类型匹配。
  • catch语句块负责捕获指定类型的异常并进行处理。
  • finally语句块是可选的,一般用于释放资源,无论是否发生异常,finally语句块总会执行。
  • 由于继承,在有多个异常需要捕获时,异常类型的顺序很重要。
  • getMessage()方法返回一个对发生的异常进行描述的字符串。
  • printStackTrace()方法打印方法的调用序列,一直到异常的产生位置。
    try{
        //可能抛出异常的代码
    }catch(ExceptionType1 e1){
        //抛出异常ExceptionType1时的异常处理代码
    }catch(ExceptionType2 e2){
        //抛出异常ExceptionType2时的异常处理代码
    }finally{
        //无论是否抛出异常,都会执行的代码
    }
抛出异常
  • 不仅Java系统的类可以抛出异常,用户程序也可以抛出异常。
  • 通过throw语句来抛出异常对象。
    throw new ExceptionType1();
声明异常类
  • 除了使用系统预定义的异常类外,用户还可以声明自己的异常类。
  • 用户自定义的异常类必须是Exception的子类。
    public class MyException extends Exception{
        public MyException(){
            super("发生异常了!");
        }
    }
  • package cn.edu.uibe.exp;
  • class MyExp extends Exception{
  •     private
    static
    final
    long serialVersionUID = 1L;
  •     MyExp(){
  •         super("自定义异常");
  •     }
  • }
  • public
    class Exp2 {
  •     public
    void f1(int n) {
  •         System.out.println("f1前面");
  •         f2(n);
  •         System.out.println("f1后面");
  •     }
  •     public
    void f2(int n) {
  •         System.out.println("f2前面");
  •         try{
  •            System.out.println("try的前面");
  •            f3(n);
  •            System.out.println("try的后面"); //发生异常时不会输出
  •         }catch(MyExp e){
  •             System.err.println(e.getMessage());
  •         }finally{
  •             System.out.println("无论是否发生异常");
  •         }
  •         System.out.println("f2后面");
  •     }
  •     public
    void f3(int n) throws MyExp{
  •         System.out.println("f3前面");
  •         f4(n);
  •         System.out.println("f3后面"); //发生异常时不会输出
  •     }
  •     public
    void f4(int n) throws MyExp{
  •         System.out.println("f4前面");
  •         if(n<0){
  •             throw
    new MyExp();
  •         }
  •         System.out.println(n); //发生异常时不会输出
  •         System.out.println("f4后面"); //发生异常时不会输出
  •     }
  •     public
    static
    void main(String[] args) {
  •         Exp2 exp = new Exp2();
  •         exp.f1(-4);
  •     }
  • }
阅读(1170) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~