1 自定义异常类
在 Java 中已经提供了大量的异常类,但是这些异常类有时候也很难满足开发者的要求。例如:现在如果设置的年龄超过了 300 岁,那么将产生一个 AgeException, 然而这样的异常 Java 本身不会提供,所以此时用户可以根据自己的需要定义自己的异常类,定义异常类只需要继承 Exception 类(强制性处理)或者是 RuntimeException 类(选择性处理)即可。
实例 1 代码:
package self.learn.exception;
public class MyException extends Exception { // 自定义异常类,继承 Exception
public MyException(String msg) { // 构造方法接收异常信息
super(msg); // 调用父类中的构造方法
}
}
package self.learn.exception;
public class DefaultException {
public static void main(String[] args) {
try {
throw new MyException("自定义异常。"); // 抛出异常
} catch (Exception e) { // 异常处理
System.out.println(e);
}
}
}
运行结果截图:
2 断言(assert)
在 JDK1.4 之后,Java 中增加了断言的功能。断言就是肯定某一个结果返回的值是正确的,如果最终此结果的返回值是错误,则通过断言检查肯定会提示错误信息。断言的定义格式如下:
assert boolean 表达式;
assert boolean 表达式: 详细信息
如果上面的 boolean 表达式的结果为 true,则什么错误信息都不会提示,如果为 false,则会提示错误信息;如果没有声明详细的信息描述,则系统会使用默认的错误信息提示方式。
实例 2 代码:
package self.learn.exception;
public class AssertDemo {
public static void main(String[] args) {
int x[] = {1,2,3};
assert x.length == 0; // 此处断言数组长度为0,可定是错误的
}
}
断言编译格式:(-enableassertions —>可以简写为 “-ea”)
javac AssertDemo.java
java -ea AssertDemo
程序出现错误如下:
运行结果截图:
上面出现的是断言错误,因为数组 x 的长度不可能是 0,但此时的信息是系统默认的错误信息,如果想要显示自己的错误信息,可以使用另外一种断言声明格式。
实例 3 代码:
package self.learn.exception;
public class AssertDemo {
public static void main(String[] args) {
int x[] = {1,2,3};
assert x.length == 0:"数组长度不为 0"; // 此处断言数组长度为0,可定是错误的
}
}
运行结果截图:
断言的使用:
(1)虽然断言返回的是 boolean 值,但是其并不能作为条件判断语句出现。
(2)断言虽然有检查运行结果的功能,但是一般开发中并不提倡使用断言。