找回密码
 注册
搜索
热搜: java php web
查看: 2516|回复: 8

[笔记]java学习笔记8--异常

[复制链接]
发表于 2009-1-28 17:57:44 | 显示全部楼层 |阅读模式
[笔记]java学习笔记8--异常
1 异常的定义:java将所有的错误封装成为一个对象,
  其根本父类为Throwable.异常处理可以提高系统的容错性.
     
       Object
         |
      Throwable
    |            |
   Error        Exception
                   |                 |
         runtimeException      非runtimeException



(1)Error: 严重的不可避免,不可挽救的错误.一般是底层错误,比如说虚拟机崩溃,不处理.

(2)runtimeException:运行时异常,也称未检查异常,一般是因为程序员的粗心而造成的,
                     是本来可以避免的,可处理,可不处理.

     几个常见的未检查异常:
     java.lang.ArithmeticException              分母为0;
     java.lang.NullPointerException             空指针操作;
     java.lang.ArrayIndexOutOfBoundsException   数组越界;
     java.lang.ClassCastException               类型转换异常;


(3)非runtimeException:已检查异常,必须处理.

2 异常对象的产生和传递:如果一个方法中有了异常没有处理,异常会延方法调用顺序向上传递,
                       传递到虚拟机,虚拟机会终止运行.

3 异常的处理,主要针对已检查异常.

  (1)消极: throws 在方法的声明中抛出异常,表示不处理,让上一级处理

  (2)积极: try-catch  捕获异常
      try {可能出现异常的代码块}
      catch(捕获异常类型){进行处理的代码};   

    try{c1.Class.forName("Student");
    }catch(ClassNotFoundException e){
          e.printStackTrace();       //打印栈跟踪信息
    }  
                     
    一个异常捕获只会匹配一次try-catch.允许写多个catch
    但要求必须先捕获子类异常再捕获父类异常.
    一个异常一旦被捕获就不存在了.

  (3)try-catch-finally   finally肯定执行,一般释放资源的代码写在里面
     try-finally  可以连用,可以嵌套

      try{c1.Class.forName("Student");        //1
      }catch(ClassNotFoundException e){       //2
           e.printStackTrace();      
      }finally{
           System.out.println("finally block");  //3
      }
           System.out.println("after try-catch-finally");  //4
      }

    三种情况下的执行顺序:

    没有异常:1->3->4
    有异常: 被捕获 1->2->3->4
    有异常: 没有捕获 1->3->退出

    在catch里写了System.exit(0),finally里的代码不执行.   
      

4 自定义异常:与一般异常的用法没有区别
   class MyException extends Exception{
       public MyException(){}
         public MyException(String message){
           super(message);
         }        
   }               

5 什么时候try-catch,什么时候throws
  配合使用,把异常抛给最能处理这个异常的对象.

6 方法的覆盖: 子类不能抛出比父类更多的异常,抛出的异常可以是父类异常的子类型.

7 断言:关键字assert,1.4引入的,调试工具
好好学习,天天向上
发表于 2009-1-28 19:09:51 | 显示全部楼层
好好学习,天天向上
回复

使用道具 举报

发表于 2009-1-28 18:48:00 | 显示全部楼层
好好学习,天天向上啊
回复

使用道具 举报

发表于 2009-1-28 19:25:52 | 显示全部楼层
谢谢哥们提醒,
回复

使用道具 举报

发表于 2009-1-28 19:18:47 | 显示全部楼层
天天学习 天天向上......................
回复

使用道具 举报

发表于 2009-1-28 18:59:04 | 显示全部楼层
呵呵 我刚学习完……
回复

使用道具 举报

发表于 2009-1-28 19:56:11 | 显示全部楼层
mark 3
回复

使用道具 举报

发表于 2009-1-28 18:55:13 | 显示全部楼层
学习!
回复

使用道具 举报

发表于 2009-1-28 19:38:25 | 显示全部楼层
不错哈
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|软晨网(RuanChen.com)

GMT+8, 2024-11-22 23:41

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

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