欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java面向对象之异常(throw与throws)

程序员文章站 2022-06-24 12:35:37
一、基础概念 1、throw和throws的区别: 位置不同:throws用在函数上,后面跟的是异常类,可以跟多个。 throw用在函数内,后面跟的是异常对象。 功能不同:throws用来声明异常,让调用者知道该功能有可能出现的问题,并由调用者给出预先的处理方式。 throw抛出具体问题的对象。语句 ......

 

一、基础概念

  1、throw和throws的区别:

   位置不同:throws用在函数上,后面跟的是异常类,可以跟多个。

         throw用在函数内,后面跟的是异常对象。

   功能不同:throws用来声明异常,让调用者知道该功能有可能出现的问题,并由调用者给出预先的处理方式。

         throw抛出具体问题的对象。语句执行到throw功能就结束了,跳转到调用者。并将具体的问题对象抛给调用者。

   注意:throw语句独立存在,下面不要定义其他语句。因为执行不到throw下面的语句。

  2、异常体系的特点:  类以及对象都具备可抛性,可以被throws和throw所操作。

  3、异常的原则:
   一般情况:(编译时会检测到异常)

    功能内部有异常throw抛出,功能上一定要throws声明。功能内部有异常throw抛出,功能上一定要throws声明。(内部抛什么,功能上就声明什么。)

    声明的目的就是为了让调用者处理,如果调用者不处理,编译失败。

   特殊情况:(编译时不进行检查)
    当函数内通过throw抛出了RuntimeException时,函数上可以不用throws声明。

    不声明是不让调用者处理。运行时发生异常,程序会停止,对代码进行修改。

  4.Exception分两种:

    编译时会被检测的异常。

    运行时异常(编译时不检测)RuntimeException

二、编译时会被检测的异常代码:

 1 class Demo
 2 {
 3     int div(int a,int b)throws Exception//声明异常Exception
 4     {
 5         if(b==0)
 6             throw new Exception("异常信息:除数不能为0");//抛出具体问题。
 7         return a/b;
 8     }
 9 }
10     
11 class ExceptionDemo1
12 {
13     public static void main (String[] arge)
14     {
15         Demo d = new Demo();
16         
17         //对异常进行处理
18         try
19         {
20             int num = d.div(4,0);
21             System.out.println("num="+num);
22         }
23         catch(Exception e)
24         {
25             //处理这个对象,可以使用该对象的方法。
26             System.out.println("处理异常的代码:除数不能为0");
27             System.out.println(e.getMessage());//异常信息
28             System.out.println(e.toString());//异常名称+异常信息
29             e.printStackTrace();//异常名字+异常信息+位置。jvm默认处理收到异常就是调用这个方法。将信息显示在屏幕上。
30         }
31         System.out.println("over");
32     }
33 }

  运行代码:

  Java面向对象之异常(throw与throws)

三、编译时不检测,运行异常程序停止代码

 1 class Demo
 2 {
 3     int div(int a,int b)
 4     {
 5         if(b==0)
 6             throw new ArithmeticException("异常信息:除数不能为0");//抛出具体问题。
 7         return a/b;
 8     }
 9 }
10     
11 class ExceptionDemo1
12 {
13     public static void main (String[] arge)
14     {
15         Demo d = new Demo();
16         
17         int num =d.div(4,0);
18         System.out.println("num="+num);
19         System.out.println("over");//这句话不能被执行了
20     }
21 }

  代码运行:

  Java面向对象之异常(throw与throws)