zoukankan      html  css  js  c++  java
  • 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("该数组为空,没有返回值!");

        }

    }

  • 相关阅读:
    *三维数组的初始化及遍历三个for循环
    *二维数组的初始化
    用while判读循环语句1+1/2!+1/3!+...1/20!的和阶乘的计算方法 式:n!=n*(n-1)!
    求一组数组各个元素的和*
    *求一组数组各个元素的和*
    使用for循环输出杨辉三角-还是不懂得需要复习
    使用for循环输出空心的菱形的思路-还是没有办法理解
    Break用法再举例
    continue用来结束本次循环 break用来结束整个循环体
    LeetCode.1154-一年中的第几天(Day of the Year)
  • 原文地址:https://www.cnblogs.com/zzp-biog/p/9851965.html
Copyright © 2011-2022 走看看