异常
什么是异常?在 Java 编程语言中,异常类定义程序中可能遇到的轻微的错误条件。可 以写代码来处理异常并继续程序执行,而不是让程序中断。
在程序执行中,任何中断正常程序流程的异常条件就是错误或异常。
异常又分为三种: 运行时异常,检查时异常,错误(错误根本就不是异常,但是却是不可以避免的)
错误(Error):JVM 系统内部错误、资源耗尽等严重情况;
异常(Exception 违例):其它因编程错误或偶然的外在因素导致的一般性问题,例如: 对负数开平方根、空指针访问、试图读取不存在的文件、网络连接中断等。
都拥有一个共同的父类,Throwable.
Throwable 类有两个子类:Exception 和 Error;
Error 类是所有Java错误类的父类,
Exception 类是所有异常的父类,包括运行时异常和检查异常。
(1)对于 Error 和 RuntimeException,可以在程序中进行捕获和处理,但 不 是必须的;
(2)对于 IOException 及其它异常,必须在程序中进行捕获和处理。
try{
//在 try 语句块中包含可能会产生异常的语句
}catch(异常类型 1 e){
//用来捕获并处理 try 中抛出的异常的代码块
}finally{
//无论是否出现异常,都会运行的块
}
(1):try 块不能单独存在,后面必须跟 catch 块或者 finally 块
(2):三者之间的组合为:try—catch 、try—catch—finally 、 try—finally 这几种是合法的
(3):一个 try 块可以有多个 catch 块,从上到下多个 catch 块的范围为从小到大
throw语句
throw 语句用来从代码中主动抛出异常。throw 的操作数是任一种异常类对象。
下面是 throw 关键字的一个示例: try {
int i = 5/0;
} catch (ArithmeticException i) {
throw new Exception("Can not be divided by zero!"
);
throws 语句
throws 用来在方法定义时声明异常。 Java 中对异常的处理有两种方法,一个就是 try-catch,然后自己处理;一个就是不做处 理,向外 throws,由别人去处理。
Java 语言要求在方法定义中列出该方法抛出的异常
public Class Example {
public static void exceptionExample() throws ExampleException,LookupException {
}
}
自定义异常
Java 语言允许用户在需要时创建自己的异常类型,用于表述 JDK 中未涉及到的其它异 常状况,这些类型也必须继承 Throwable 类或其子类。用户自定义异常类通常属 Exception 范畴,依据命名惯例,应以 Exception 结尾。用户自定义异常未被加入 JRE 的控制逻辑中, 因此永远不会自动抛出,只能由人工创建并抛出。
看一个用户自定义异常的例子:
程序:
class MyException extends Exception {
private int idnumber;
public MyException(String message, int id) {
super(message);
this.idnumber = id;
}
public int getId() {
return idnumber;
}
}
public class Test{
public void regist(int num) throws MyException {
if (num < 0) {
throw new MyException("人数为负值,不合理",3);
}
System.out.println("登记人数"+ num);
}
public void manager() {
try {
regist(-100);
} catch (MyException e) {
System.out.print("登记出错,类别:"+e.getId());
}
System.out.print("本次登记操作结束");
}
public static void main(String args[]){
Test t = new Test();
t.manager();
}
}