Java异常

1.异常与错误

  异常:exception  例外,代码满足了用户需求,但是除掉例外

  错误:error  人为所犯的错误,完全不符合java语法规范

 

2.异常的分类

  分为运行时异常(非检查异常)和编译时异常(检查异常)

    a、通常大部分运行时异常需要运行代码才会出现异常,非运行异常在编写代码时就出现(但是不绝对)

      b、所有的异常类都是直接或者间接地继承于exception类,所有的运行时异常都是直接或间接地继承于RuntimeException类

 

3.检查异常的解决方式

  1)继续抛,最后抛给了虚拟机:throws

  2)进行捕获:try{ }  catch(Exception e){ }  finally{ }

Try{

可能抛异常的语句

}

Catch(Exception e){

捕获异常的语句

}

Finally{

不管是否抛异常都一定要执行的语句

}

注意:

a、当try里面的语句发生异常才会执行catch里面的语句

b、Finally实现资源链接的关闭(数据库等),不管是否发生异常,都需要关闭资源

c、Try必须跟catch或finally匹配存在,不能独立存在

 

4.throw和throws的区别

  Throws:应用在方法外的,用于进行捕获异常继续抛

  Throw:在方法内使用,相当于抛出一个异常对象

 

5. 自定义异常:自定义异常类必须直接或间接继承Exception类,也就是定义一个类,继承exception类或者它的子类

Class myexception extends Exception{

  Public void fun1(){

    System.out.println(“abcd”);

    }

}

 

Public class test{

  Public static void main(String[] args){

    Try{

      Fun2();

    }catch(myexception e){

      e.fun1();

     }

  }

  Public static void fun2() throws myexception{

    Int a=9;

    If (a==9){

      Myexception b=new myexception();

      Throw b;

     }

  }

}

例:定义一个类,要求传入一个数组,如果该数组为空,抛出异常;否则,返回该数组的最大值。

 

//测试类

public class Test {

public static void main(String[] args) {

          shuzu sz=new shuzu();

          int a[]={};

try {

           System.out.println(sz.retun(a));

       } catch (Exception e) {

              System.out.println(e.getMessage());

       }

}

}

 

//定义类

class shuzu{

    public int retun(int a[]) throws Exception{

       int max=0;

       if (a.length==0||a==null) {

              throw new myGetMessage();

       }else{

           for (int i = 0; i < a.length; i++) {

               if(max<a[i]){

        max=a[i];

              }

           }

       }

       return max;

   }

}

 

//自定义的异常

class MyGetMessage extends Exception {

    public String getMessage(){

       System.out.println("该数组为空,没有返回值!");

    }

}

原文地址:https://www.cnblogs.com/zzp-biog/p/9851965.html