/*
异常:就是程序在运行时出现不正常的情况,
异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述,并封装成对象。
   其实就是java对不正常情况进行描述后的对象体现。

对于问题的划分:
  两种:一种是严重的问题;一种是非严重的问题

对于严重的:java通过Error类进行描述。
 对于Error一般不编写针对性的代码对其进行处理。
 
对于非严重的:java通过Exception类进行描述。
 
无论Error或者Exception都有一些共性内容,
比如:不正常情况的信息,引发原因等。

Throwable
    --Error
    --Exception

 

2、异常的处理

java提供了特有的语句进行处理,

try
{
 需要检测的代码;
}
catch(异常类 变量)
{
 处理异常的代码;
}
finally
{
 一定会执行的语句;
}

3、对捕获到的异常对象进行常见方法操作,
 String getMessage();//获取异常信息
 
 

*/

 

例子1:
class Demo
{
 int div(int a,int b)
 {
  return a/b;
 }
}

public class ExceptionDemo
{
 public static void main(String[] args)
 {
  Demo d = new Demo();
  try
  {
   int x = d.div(4, 0);//出现错误: 会生成new ArithmeticException();丢给catch
   System.out.println("x="+x);
  }
  catch(Exception e)//Exception e = new ArithmeticException();
  {
   System.out.println("除零了!");//问题处理完了,就没问题了;继续运行程序
   System.out.println(e.getMessage());//   / by zero
   System.out.println(e.toString());//异常名称:  异常信息   / java.lang.ArithmeticException: / by zero
   e.printStackTrace();//异常名称 : 异常信息  ,异常出现的位置,
        //其实jvm默认的异常处理机制,就是在调用printStackTrace方法,
        //打印异常的堆栈的跟踪信息
  }
  
  System.out.println("Over!");
  /*
  Demo d = new Demo();
  int x = d.div(4, 0);//可处理:Exception
  System.out.println("x="+x);
  System.out.println("Over!");
  */
  
  //byte[] arr = new byte[1024*1024*600];//不可处理:Error;超出虚拟机范围
  
  
 }

}

 

例子2:

class Demo1
{
 int div(int a,int b)throws ArithmeticException,ArrayIndexOutOfBoundsException  //在功能上通过throws的关键字声明了该功能有可能会出现问题
 {       //抛出两个异常
  int[] arr = new int[a];
  
  //两个异常只能发生一个,因为一个异常发生,程序就结束了!
  System.out.println(arr[4]);//越界异常
  
  return a/b;//数学异常
 }
}

public class ExceptionDemo1
{
 public static void main(String[] args) //throws Exception一般不要抛(推卸责任)
 {
  Demo1 d = new Demo1();
  
  try
  {
   int x = d.div(4, 0);//只能发生一个异常!此语句产生越界异常
   System.out.println("x="+x);
  }
  //catch按照顺序执行
  catch (ArithmeticException e) //处理数学异常
  {
   System.out.println(e.toString());
   System.out.println("被零除了!");
  }
  catch (ArrayIndexOutOfBoundsException e)
  {
   System.out.println(e.toString());
   System.out.println("角标越界了!");
  }
  catch (Exception e)//父类
  {
   System.out.println("HAHA:"+e.toString());
  }
  
  
  System.out.println("Over!");
 }
}

posted on 2013-03-12 16:58  Stone_S123  阅读(78)  评论(0编辑  收藏  举报