异常处理

 异常                                                                       

什么是异常?在 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();

}

}

原文地址:https://www.cnblogs.com/Melony/p/4436893.html