zoukankan      html  css  js  c++  java
  • 异常处理

     异常                                                                       

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

    }

    }

  • 相关阅读:
    Ext.FormPanel-----FieldSet的用法
    DAO层,Service层,Controller层、View层
    PageProxy分页的实现
    Layout布局(补充)
    Ext--Layout(布局)
    DirectEvents用法
    Linq的使用
    字符串注入攻击
    winform(C#)里弹出“确定”“取消”对话框
    C#的数组
  • 原文地址:https://www.cnblogs.com/Melony/p/4436893.html
Copyright © 2011-2022 走看看