javaSE 笔记 异常 + try...catch... + throws/throw + 自定义异常

异常

异常体系的超类是Throwable,下面有Error类和Exception类,Error类属于严重问题,不需要处理,Exception类属于异常类,
它表示程序本身可以处理的类。Exception类下面又有两个类,分别为RuntimeException类和非RunTimeException类,,前者
在编译期不检查,后者在编译期就得处理。

异常处理之try...catch...格式:

try{
    可能出现的代码;
} catch(异常类名 变量名){
    异常的处理代码;
}

程序从try开始执行,出现异常,会自动生成异常类对象(相当于new 了一个对象),被提交给java运行时系统,再去catch中匹配异常类,
找到后进行异常处理,处理完再继续运行。注意:自己写了异常处理代码后,能够继续执行,不然程序会停止。异常处理可以用
printStackTrace()方法来处理,虽然在控制台输出的东西是差不多的,但是这样我的程序能够继续运行。

Throwable成员方法

有getMessage,toString,printStackTrace方法,最后一个信息最全最常用。

编译时异常和运行时异常

编译时异常:必须显示处理,否则程序会发生错误,无法通过编译.也就是利用try...catch...来处理,比如当用到SimpleDataFormat
类中的parse方法时,就会提示有一个未处理的异常ParseException,那就得在catch的()里添加这个异常类的对象

运行时异常:无需显示处理,也可以跟编译时异常一起处理,显示处理指的是自己写个try...catch...
需要注意的是,编译时异常不一定就会出错,可能出错,也可能不出错。比如给了一个日期的字符串,如果与给定日期格式不匹配会报错
,更多的得积攒更多案例了。

异常处理之throws

try...catch...可以处理一些异常,但是不是所有情况我们都有权限进行异常处理。如果出现,java提供了throws处理方案,针对编译
时和运行时,throws 异常类名;这个格式是跟在方法的括号后面的。

  • 编译时异常必须要处理,要么try..catch..,要么throws(谁来调用谁处理,在调用的地方进行try...catch...)
  • 运行时异常可以不处理,出现问题后,再修改代码。
    注意:throws只是抛出异常,推迟异常处理的时间,并没有真正地解决异常。

自定义异常

1.自定义一个异常类,只需要定义一个继承自Exception或者RuntimeExceptions的类即可,并提供个无参构造,有参构造即可。
2.在类的方法内部用throw抛出异常对象的时候,需要在类名()后面加上throws 异常类名。不过前面的做法是基于异常类继承自
Exception类的时候,即编译时异常。如果继承自RuntimeExceptions,后面加不加throws都一样。现在还不知道为什么。。。
3.在测试类调用方法体中会抛出异常的类的方法时,编译时异常必须显示处理,即用try...catch...
throws 和 throw的区别:

throws throw
用在方法声明后面,跟的是异常类名 用在方法体内,跟的是异常对象名
表示抛出异常,由该方法的调用者来处理 表示抛出异常,由方法体内的语句处理
表现出现异常的一种可能性,并不一定真会异常 执行throw一定抛出了某种异常

注意throw跟的对象名可以用new 。。。就是匿名对象,更方便。

上一篇:Java面试官:开发过程中


下一篇:缓冲流、转换流、序列化流