异常处理 第三讲091114

异常处理 Exception (in java.lang)
----------------------------------------------------------------------
Error:称为错误,由 Java 虚拟机生成并抛出。
Exception:所有异常类的父类。
Runtime Exception:一类特殊的异常,由系统自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理)。如被 0 除、数组下标超范围等。
 
  Throwable
     //
Error  Exception
  |         //
 ...     ...  RuntimeException//可以不声明
                     |
                    ...
 
 ClassNotFoundException 
 IOException  
 InterruptedException
 RuntimeException
 ArithmeticException
 NullPointerException
 IndexOutOfBoundsException
 ArrayIndexOutObBoundsException
 StringIndexOutObBoundsException 
 
----------------------------------------------------------------------
 
try{
……
}catchTheException x{
……//处理异常
}finally{
……//后续工作,如清除临时文件
}
 
x.printStackTrace()  输出堆栈信息 
System.out.println(x.getMessage()) 输出异常事件信息
 
----------------------------------------------------------------------
 
捕获多个异常应该先逮小的再逮大的。否则编译不通过。
 
----------------------------------------------------------------------
自定义异常:
性别异常。
 
文件:Exception13.java
 
class SexException extends Exception{//仅仅是声明是个异常,和定义其他类一样,只需要继承Exception 
       SexException(String message){ 
              super(message);
              System.out.println("年龄异常");
       }
}
class Exception13{
       public void aa(int age)throws SexException{//抛出异常
              if(age<18){
                     throw new SexException("联系管理员");//注意throw new 的顺序
              }
       }
 
       public static void main(String[] args) {
              Exception13 ex=new Exception13();
              try{
                     ex.aa(17); //引用这个抛出了异常的方法
              }catch(SexException se){ //然后解决(catch)这个异常吧
                     se.printStackTrace();
              }
       }
}
 
```````````````````````````````````````````````````````````````````````````
文件:Test_13.java
 
class MyException extends Exception {//仅仅是声明是个异常,和定义其他类一样,只需要继承Exception 
    private int id;
    public MyException(String message,int id) {
        super(message);
        this.id = id;
    } 
    public int getId() {
        return id;
    }
}
 
 
class Test_13 {
    public void regist(int num) throws Exception {//抛出异常 
        if (num < 0) {
            throw new MyException("人数为负值,不合理", 1);//抛出异常 
        }
        System.out.println("登记人数 " + num);
    }
    
    public void manager() {
        try {
             regist(-100);//引用这个抛出了异常的方法 
        } catch (Exception e) {//然后解决(catch)这个异常吧 
            System.out.println("登记失败,出错类型码=" + ((MyException)e).getId());
            e.printStackTrace();
        }
        System.out.print("操作结束");
    }
    
    public static void main(String[] args) {
        Test_13 t = new Test_13();
        t.manager();
    }
}
 
----------------------------------------------------------------------
 
异常的其他用法:
 
判断String 是否为整数。
 
 public class DataC{
       public static void main(String[] args) {
       DataC c=new DataC();
       System.out.println(c.DataInt("123"));
       }
 
 boolean DataInt(String b){
       boolean a;
              try{
               Integer.parseInt(b);
               a=true;//只有上行转成功,程序才可以运行到这里。否则已经被捕捉
              }catch(Exception ex){
               a=false;
              }
              return a;
       }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值