Java面向对象之异常(throw与throws)
一、基础概念
1、throw和throws的区别:
位置不同:throws用在函数上,后面跟的是异常类,可以跟多个。
throw用在函数内,后面跟的是异常对象。
功能不同:throws用来声明异常,让调用者知道该功能有可能出现的问题,并由调用者给出预先的处理方式。
throw抛出具体问题的对象。语句执行到throw功能就结束了,跳转到调用者。并将具体的问题对象抛给调用者。
注意:throw语句独立存在,下面不要定义其他语句。因为执行不到throw下面的语句。
2、异常体系的特点:类以及对象都具备可抛性,可以被throws和throw所操作。
3、异常的原则:
一般情况:(编译时会检测到异常)
功能内部有异常throw抛出,功能上一定要throws声明。功能内部有异常throw抛出,功能上一定要throws声明。(内部抛什么,功能上就声明什么。)
声明的目的就是为了让调用者处理,如果调用者不处理,编译失败。
特殊情况:(编译时不进行检查)
当函数内通过throw抛出了RuntimeException时,函数上可以不用throws声明。
不声明是不让调用者处理。运行时发生异常,程序会停止,对代码进行修改。
4.Exception分两种:
编译时会被检测的异常。
运行时异常(编译时不检测)RuntimeException
二、编译时会被检测的异常代码:
class Demo { int div(int a,int b)throws Exception//声明异常Exception { if(b==0) throw new Exception("异常信息:除数不能为0");//抛出具体问题。 return a/b; } } class ExceptionDemo1 { public static void main (String[] arge) { Demo d = new Demo(); //对异常进行处理 try { int num = d.div(4,0); System.out.println("num="+num); } catch(Exception e) { //处理这个对象,可以使用该对象的方法。 System.out.println("处理异常的代码:除数不能为0"); System.out.println(e.getMessage());//异常信息 System.out.println(e.toString());//异常名称+异常信息 e.printStackTrace();//异常名字+异常信息+位置。jvm默认处理收到异常就是调用这个方法。将信息显示在屏幕上。 } System.out.println("over"); } }
运行代码:
三、编译时不检测,运行异常程序停止代码
class Demo { int div(int a,int b) { if(b==0) throw new ArithmeticException("异常信息:除数不能为0");//抛出具体问题。 return a/b; } } class ExceptionDemo1 { public static void main (String[] arge) { Demo d = new Demo(); int num =d.div(4,0); System.out.println("num="+num); System.out.println("over");//这句话不能被执行了 } }
代码运行:
相关推荐
joyjoy0 2020-08-13
qiximiao 2020-08-03
Greatemperor 2020-07-18
葫芦小金刚 2020-06-26
VanTYS 2020-05-30
huanghong 2020-05-28
星辰大海的路上 2020-05-12
cenylon 2020-05-08
容数据服务集结号 2020-04-07
VanTYS 2020-02-23
THEEYE 2020-02-15
钟鼎 2020-02-10
THEEYE 2020-02-03
fanhuasijin 2020-01-18
chvnetcom 2020-01-18
First00 2020-01-04
THEEYE 2019-12-18
justep 2014-01-29