您的位置:首页 > 编程语言 > Java开发

【安博培训技术】Java4 异常处理 20130919

2013-09-21 09:37 483 查看
异常处理,调试

异常分为:
1. 检查异常
必须人为干预,否则编译不通过?

    检查异常都是继承自  Exception类
2. 运行时异常

     不是非得人为干预
     都是继承自 RuntimeException类

Java异常类 

处理异常的方式:

    1.try catch finally

        注意: try 必须出现catch和finally可以
  都出现 可以出现一个 但不能都不出现

             catch可以出现多个

     2.throws

try 和 catch 块 2-2

  public class ArithmeticException {

    /** 构造方法. */

    public ArithmeticException() {

    }

    public static void main(String[] args) {

      ExceptionRaised obj = new ExceptionRaised();

      try {

          /* 定义变量 result 以存储结果. */

          int result = obj.calculate(9, 0);

          System.out.println(result);

       }catch (Exception e) {

          System.err.println(“发生异常:"  + e.toString());

          e.printStackTrace();

      }

    }

  }

  

  class ExceptionRaised {

       /** 构造方法. */

       public ExceptionRaised()  {

       }

      /**

       * 这个方法运行时将会产生一个异常.

       * @param operand1 除法中的分子

       * @param operand2 除法中的分母

       * @return int   返回除法的结果

       */

       public int calculate(int operand1, int operand2)  {

          int result = operand1 / operand2; 

          return result;

      }

  }

异常处理块的一般形式

  try{

   // 要监控错误的代码块

      methodGeneratingException();

  } catch (Exception e) {

  // Exception e 的异常处理程序

  } finally{

  // 在 try 结束前要执行的代码块

     cleanup();

  }

  

多重 catch 块3-1

  一段代码可能会生成多个异常

  当引发异常时,会按顺序来查看每个 catch 语句,并执行第一个类型与异常类型匹配的语句

  执行其中的一条 catch 语句之后,其他的 catch 语句将被忽略 

         

  try{

    …….

  } catch(ArrayIndexOutOfBoundsException e) {

    ……

  } catch(Exception e) {

    ……

  }

多重 catch 块3-2

  使用多重 catch 语句时,异常子类一定要位于异常父类之前 

 

用户自定义异常 2-1

  自定义异常概念

  使用自定义异常的时候

  JavaAPI提供的内置异常不一定总能捕获程序中发生的所有错误。有时会需要创建用户自定义异常 

  自定义异常需要继承Exception 及其子类

用户自定义异常 2-2

  创建用户自定义异常

  继承 Exception 或其子类

  

  class ArraySizeException extends NegativeArraySizeException  {

       /** 构造方法。 */

       ArraySizeException()  {

           super(“您传递的数组大小非法");

      }

  }

  

    class UserDefinedExceptions {

      /** 构造方法. */

      protected UserDefinedExceptions() {

      }

     /**

      * 类和应用程序的唯一入口点.

      * @param arg 字符串参数的数组

      */

      public static void main(String[] arg) {

          ExceptionClass obj = new ExceptionClass(Integer.parseInt(arg[0]));

      }

  }

  

    class ExceptionClass {

       ExceptionClass(int val) {

          size = val;

          try {

              checkSize();

          } catch (ArraySizeException e) {

              System.out.println(e);

          }

      }

     /** 声明变量以存储数组的大小和元素. */

      private int size;

      private int[] array;

      /** 检查数组长度的方法.

        *  @ throws 一个 ArraySizeException

        */

      public void checkSize() throws ArraySizeException {

          if (size < 0) {

              throw new ArraySizeException();

          }

          array = new int[3];

          for (int count = 0; count < 3; count++) {

          array[count] = count + 1;

          }

      }

  }

Myeclipse断点调试

  在你觉得有错的地方设置断点 。

  切换到DEBUG模式下。

      

  运行程序,当程序运行到刚才设置断点的位置就会停下来,并且那行代码底色会高亮显示。、

       

  接着你在如下界面你可以看到你想要的信息 

在Variables里面可以查看所有变量的值,比如刚才设置的断点里面的strClassName的值就可以看到。 

  下面按钮第一个是进入方法执行,比如你调用了其他方法,可以进入方法一步一步执行,如果点击第二个按钮,只会在本方法内一步一步执行,第三个按钮时你跳出此方法,继续执行调用这个方法的原方法。 

  

总结

  异常是运行时发生的错误

  可以使用 try、catch、throw、throws 和 finally 来管理 Java 异常处理。要监控的程序语句包含在 try 块内catch 块中的代码用于捕获和处理异常。在方法返回之前绝对必须执行的代码应放置在 finally 块中

  要手动引发异常,使用关键字 throw。任何被抛到方法外部的异常都必须用 throws 子句指定

  自定义异常的编写和使用

  异常的调试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: