Cava 异常处理

简介

cava目前的异常处理还比较弱,不支持用户使用try、exception来捕获和处理异常。cava在执行过程中会自动检测除0、数组访问越界、null访问异常。cava代码在检测出来这些异常时会终止执行,并返回异常信息。建议用户在除法、数组访问和对象访问之前都进行合法性检测,从而避免异常出现。

除0异常

代码示例:

  1. int b = 0;
  2. int a = 1 / b; // 除0异常
  3. ----------------------------------------------------------------------
  4. double c = 0;
  5. double b = 1 / c; // 浮点数除0不抛异常
  6. int a = 1 / c; // 浮点数除0不抛异常

最佳实践:

  1. int b = 0;
  2. int a = 0
  3. if (b != 0) {
  4. a = 1 / b;
  5. }

数组访问越界异常

代码示例:

  1. int[] a = new int[10];
  2. a[-1] // 不合法,超数组下限
  3. a[10] // 不合法,超数组上限

最佳实践:

  1. int[] a = new int[10];
  2. int idx = 10
  3. if (idx > 0 && idx < a.length) {
  4. int b = a[idx];
  5. }

null访问异常

代码示例:

  1. Person student = null; //假设Person是已经定义好的类
  2. student.setAge(15); // null 对象不能访问下标

最佳实践:

  1. Person student = null;
  2. if (student != null) {
  3. student.setAge(15);
  4. }

用户主动抛异常

代码示例:

  1. Abort.abort();
  2. Abort.abort("exception");