`
AlexShaw
  • 浏览: 12909 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员_java学习日记_Java基础_异常

 
阅读更多

---------------------- android培训java培训java学习型技术博客、期待与您交流! ----------------------

异常:程序在运行时出现的不正常现象

异常的由来:问题也是现实生活中的一系列事务,也可以由java进行描述并封装成对象
对于问题的划分:一种是严重的问题,一种是非严重问题
严重:error来描述,一般不编写针对性代码进行处理,虚拟机无法搞定
非严重:exception来描述,采用针对性的方式进行处理
无论error或者exception都有些共性内容,比如不正常情况的信息和引发原因,即可以向上抽取,抽取的父类即throwable
异常处理:
try:可能会出现异常的代码
catch:对异常的处理语句
finally:一定需要执行的语句
对捕获的异常的常见方法操作
gtMessage:获取异常信息
toString:异常名称+异常信息
printStackTrace :打印堆栈中的异常信息,信息最全面
其实JVM的异常机制就是在调用printStackTrace打印堆栈的跟踪信息
 
作为程序编写者,必须知道有可能出现的异常信息
throws:在功能上通过throws关键字声明该功能可能会出现问题
throws时,最好具体被抛出的什么异常,这样处理的可以更具体
对方生命几个异常,就对应几个catch块
catch块要定义具体处理方式 例如硬盘文件记录(日志)
try {
x = Exception01.div(3,0);
} catch (ArithmeticException e) {
System.out.println(e.getMessage());
} catch (Exception e1) {
System.out.println(e1.getMessage());
}
这样写的缺点:无法得知意料之外的异常,为了严谨需要知道出现什么异常
自定义异常:必须手动抛出,系统异常可以自动抛出或者手动抛出
1.必须继承exception或者throwable,只有exception才能被抛出
throw和throws的区别
throws用于函数上,后面跟多个异常类
throw用户函数内,跟的是异常对象
class fushuException extends Exception
{
 
public fushuException(String mess) {
        //父类把异常信息的操作都完成了,子类只要在构造时将异常信息传递给父类
        super(mess);
}
@Override
public String toString() {
return this.mess;
}
}
 
if(b < 0)
{
//手动通过throw关键字抛出异常对象,自定义异常只能手动抛出
throw new fushuException();
}
自定义异常信息:重写toString方法
 
运行时异常(特殊):函数内抛出,类上不需要声明,而且调用者一样不用处理(try)。编译一样通过
不需要让调用者处理,是因为当异常发生时,希望程序停止,在运行时,出现无法继续运算的情况,希望代码停止后对其进行修正
自定义异常时,如果该异常的发生无法再继续进行运算,就让自定义异常继承runtimeexception
编译时被检测的异常
编译时不被检测的异常
finally:一定会被执行的代码,通常用于关闭资源
try是必须的 catch 和finally是选的
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics