a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 119|回复: 0

[其他] java认证:Java异常处理的一个综合实例

[复制链接]
发表于 2012-8-4 12:28:23 | 显示全部楼层 |阅读模式
声明抛出异常
- `( }) [% o$ c8 k& W3 R9 t' @如不雅察看序员不想在当前体例内措置异常,可以使用throws语句声明将异常抛出到挪用体例中。
+ N3 |) N3 [8 R, k7 f. u挪用体例也可以将异常再抛给其他挪用体例。
2 t, M1 n$ V- y8 F5 [7 W如不美观所有的体例都选择了抛出此异常,最后Java虚拟机将捕捉它,输出相关的错误信息,并终止轨范的运行。 0 T5 k3 C5 i2 w4 V( O. ^8 y
在异常被抛出的过程中,任何体例都可以捕捉异常并进行响应的措置。
2 ?8 n3 z) c. ~( }. ]# O捕捉异常
3 {' k7 y9 Z; C* T& T& z  ~2 O捕捉异常需要使用try、catch、finally组成的语句块。
% G. s" `% S  q# `try语句块中是可能抛出异常的代码,如不美观一条语句抛出了异常,厥后续语句不会继续执行,而是转到catch进行异常类型匹配。
9 z' j' p" ]( {; ~catch语句块负责捕捉指定类型的异常并进行措置。
/ Y* }$ n+ A9 A# J. F- O( W3 B6 v7 Kfinally语句块是可选的,一般用于释放资本,无论是否发生异常,finally语句块总会执行。 - [/ U+ r3 s9 w" ^4 Y
因为担任,在有多个异常需要捕捉时,异常类型的挨次很主要。 8 e, l4 N$ q8 v$ W/ V
getMessage()体例返回一个对发生的异常进行描述的字符串。
, S$ k$ ]9 {& U9 T) [; d4 |printStackTrace()体例打印体例的挪用序列,一向到异常的发生位置。 4 Y# h* y  z& X% I8 P1 O3 s
    try{+ A: h7 C4 z, j; {( v
        //可能抛出异常的代码4 Z9 Z+ h& ^6 j5 v9 d. w, B& X
    }catch(ExceptionType1 e1){
, F, A/ e4 u: i. J1 Z        //抛出异常ExceptionType1时的异常措置代码
# i& q5 d& N7 T. h7 |    }catch(ExceptionType2 e2){
) r3 s9 D# V. J  X        //抛出异常ExceptionType2时的异常措置代码
; I2 H# x8 O" {& \1 C; _    }finally{/ [" }( K. Q; M( `" n  J( \
        //无论是否抛出异常,城市执行的代码
: z8 s0 w1 p( O    }
5 L- j$ @8 q: o" _抛出异常不仅Java系统的类可以抛出异常,用户轨范也可以抛出异常。经由过程throw语句来抛出异常对象。    throw new ExceptionType1();- t& A0 ~0 g0 }6 B% |
声明异常类除了使用系统预界说的异常类外,用户还可以声明自己的异常类。用户自界说的异常类必需是Exception的子类。    public class MyException extends Exception{
3 c2 w% ]2 @' M) b$ q/ W6 g+ H. v6 ]        public MyException(){7 P1 d7 r2 U' c( X0 K+ l$ U4 R3 p
            super("发生异常了!");) K4 T; Y! ^# p# G' E& K" Z- M
        }
) w5 m5 \# _1 W, }( \3 p; t0 f    }
" M) {; d6 _% ?: a6 f: K3 qview 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-9-27 21:19 , Processed in 0.225311 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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