a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 67|回复: 0

[其他] JAVA技巧:Java异常处理的一个综合实例

[复制链接]
发表于 2012-8-4 12:28:23 | 显示全部楼层 |阅读模式
声明抛出异常
, [$ p% P9 O: K, R如不雅察看序员不想在当前体例内措置异常,可以使用throws语句声明将异常抛出到挪用体例中。   N9 p3 T2 ~6 A5 `) j: N$ f
挪用体例也可以将异常再抛给其他挪用体例。
7 z  @; }- F  t如不美观所有的体例都选择了抛出此异常,最后Java虚拟机将捕捉它,输出相关的错误信息,并终止轨范的运行。
6 N, a/ L  z& h, x9 J- U在异常被抛出的过程中,任何体例都可以捕捉异常并进行响应的措置。
' l/ b" k; ?% e' T( J' H* F5 D7 W捕捉异常: z( P; D( _, G
捕捉异常需要使用try、catch、finally组成的语句块。
; B( w5 i% q1 s3 Y! Y  l$ T0 Mtry语句块中是可能抛出异常的代码,如不美观一条语句抛出了异常,厥后续语句不会继续执行,而是转到catch进行异常类型匹配。 " F9 f& \7 P, O. F% F
catch语句块负责捕捉指定类型的异常并进行措置。 0 n+ G) i& n( i) {4 p' |
finally语句块是可选的,一般用于释放资本,无论是否发生异常,finally语句块总会执行。
! H  \6 a# }- B* b$ @8 G+ K/ q因为担任,在有多个异常需要捕捉时,异常类型的挨次很主要。
! p0 r  d, [; }getMessage()体例返回一个对发生的异常进行描述的字符串。
. ?" V$ Y6 l3 T5 o& ?/ rprintStackTrace()体例打印体例的挪用序列,一向到异常的发生位置。 0 z, t7 `) h8 |1 o+ D
    try{
, V; h% A& e7 X& |  t        //可能抛出异常的代码) G, V+ d- u: R  m+ t+ p$ h8 c
    }catch(ExceptionType1 e1){; h7 U( p. {& j, U( w; k1 E7 H$ L; w
        //抛出异常ExceptionType1时的异常措置代码) O3 s- g: C# v- M7 k* y2 `5 y$ f
    }catch(ExceptionType2 e2){. H. ?" G+ J, r& Q2 c; D' f
        //抛出异常ExceptionType2时的异常措置代码% R* k5 S; f/ Y5 ?
    }finally{
3 A" V9 ?6 F+ u5 |1 V        //无论是否抛出异常,城市执行的代码
+ i; h+ W+ b) `# c$ `    }2 C- z* o6 @* O2 u) q
抛出异常不仅Java系统的类可以抛出异常,用户轨范也可以抛出异常。经由过程throw语句来抛出异常对象。    throw new ExceptionType1();
$ d4 Z+ I* K% c声明异常类除了使用系统预界说的异常类外,用户还可以声明自己的异常类。用户自界说的异常类必需是Exception的子类。    public class MyException extends Exception{+ n. d/ y" Y4 A) n. Y
        public MyException(){
, V8 w& z" M6 d4 g& T8 S1 M            super("发生异常了!");4 _: e- D8 l6 i
        }
- }% c' `/ ^4 n& K    }
+ ]0 q; c" ^. \! u9 }  s. K8 t% ~view plaincopy to clipboardprint?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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-22 02:12 , Processed in 0.490375 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表