Chinaunix首页 | 论坛 | 博客
  • 博客访问: 789272
  • 博文数量: 104
  • 博客积分: 915
  • 博客等级: 下士
  • 技术积分: 2171
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-24 21:34
文章分类

全部博文(104)

文章存档

2018年(4)

2015年(14)

2014年(9)

2013年(56)

2012年(21)

分类: Java

2015-09-04 18:09:09

异常:
导致程序中断运行的一种指令流,当异常发生时,如果没有进行良好的处理,则程序会中断执行。

常见的非自定义异常:
1、java.lang.ArithmeticException
算术异常
比如:被除数为0
2、java.lang.ArrayIndexOutOfBoundsException
数组下标越界异常
比如:没有输入参数,或输入参数不够
3、java.lang.NumberFormatException
数字格式化异常
比如:需要输入数字,但是输入的是字母

异常类的继承结构:
Exception(继承Throwable):一般表示程序中出现的问题。
Error(继承Throwable):一般指的是JVM错误,程序中无法处理。

异常的捕获方式:
try……catch
try……catch……finally


异常打印方式:
1、System.out.println(异常对象)
2、e.printStackTrace();  打印的异常信息是最完整的

异常处理机制:
1、一旦产生异常,则首先会产生一个异常类的实例化对象。
2、在try语句中对此一场对象进行捕捉。
3、产生的异常对象与catcht语句中的各个异常类型进行匹配,如果匹配成功,则执行catch语句中的代码。
注意:
对于一个程序来说,如果有多个异常,最好分别进行捕获,不要直接使用Exception捕获全部异常。
先使用范围小的,再使用范围大的。

throws和throw关键字
1、throws:使用throws关键字声明的方法表示此方法不处理异常。
比如:
class Math{
        public int div(int i, int j) throws Exception{
            int temp = i / j;
            retrun temp;
        }
    }
注意:
主方法是一切的起点,不要再主方法处使用throws,否则程序出现问题后肯定交由JVM进行处理,将导致程序中断。
2、throw:使用throw可以人为地抛出一个异常,抛出时直接抛出异常类的实例化对象即可。
public  class ThrowDemo{
    public static void main(String args[]){
        try{
            throw new Exception("自己抛出的异常");   //手工抛出的一个新的异常类实例
        }catch(Exception e){
            System.out.println(e);
        }
    }
}
注意:
这个关键字一般不会单独用。往往会抛出程序中已经产生的异常实例,而不会手工抛出一个新的异常类实例。

以上关键字联合使用的实例:
class Math{  
     public int div(int i, int j) throws Exception{
            try{
                 int temp = i / j;
            }catch(Exception e){
                throw e;
            }finally{
                System.out.println("计算结束");
            }
            retrun temp;
        }
}
public  class ThrowDemo2{
    public static void main(String args[]){
        Math m = new Math();
        try{
            System.out.println("出发操作:" + m.div(10, 0 ));      
        }catch(Exception e){
            System.out.println("异常产生:" + e);
        }
    }
}

Exception和RuntimeException:
继承关系:
Exception——>RuntimeException——>IllegalArgumentException——>NumberFormatException
注意:
Exception必须使用try……catch进行处理。
RuntimeException可以不使用try……catch进行处理,但是如果产生异常,则异常将由JVM进行处理,所以最好使用try……catch进行处理。

自定义异常类:
只需要继承Exception类即可

断言:
assert boolean 表达式;
比如:
assert x.length == 0;
assert boolean 表达式:详细信息;
比如:
assert x.length == 0:"数组长度不为0";
注意:
1)虽然断言的返回是boolean值,但是并不能将其作为条件判断语句。
2)断言虽然有检查运行结果的功能,但是在开发中并不提倡使用断言。

阅读(853) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~