---------------------- 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是选的
相关推荐
黑马程序员_毕向东_Java基础视频教程第18天-14-IO流(拷贝文本文件图例).zip
黑马程序员_Java基础辅导班教程课件[第01期]第15天
黑马程序员_Java基础辅导班教程课件[第01期]第12天
黑马程序员_Java基础辅导班教程课件[第01期]第8天
黑马程序员_Java基础辅导班教程课件[第01期]第12天
黑马程序员_Java基础辅导班教程课件[第01期]第11天
黑马程序员_Java基础辅导班教程课件[第01期]第7天
黑马程序员_Java基础辅导班教程课件[第01期]第5天
( 01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip )
黑马程序员_Java基础辅导班教程课件[第01期]第4天
黑马程序员_Java基础辅导班教程课件[第01期]第12天
黑马程序员_hibernate框架开发2016版讲义和笔记资料_day02
黑马程序员_Java基础辅导班教程课件[第01期]第6天
黑马程序员_Java基础辅导班教程课件[第01期]第10天
黑马程序员_Java基础辅导班教程课件[第01期]第9天
黑马程序员_毕向东_Java基础视频教程第22天-06-GUI(Action事件).zip
黑马程序员_毕向东_Java基础视频教程第18天-09-IO流(文件的续写)
黑马程序员_张孝祥_Java多线程与并发库,视频+代码+资料
黑马程序员_hibernate框架开发2016版讲义和笔记资料_day1_day2_day3_day4 包含4天的教学文档
黑马程序员_张孝祥_Java多线程与并发库,老师讲的非常仔细,老师很有耐心.欢迎大家下载学习.