异常的分类

1.Error

由java虚拟机生成并抛出,包括动态链接失败,虚拟机错误等等,JAVA程序无法对此错误

try
{
//可能出现异常的代码块
}
catch(exception1 )
{
//产生异常1的处理措施
}
catch(exception 2)
{
//产生异常2的处理措施
}
。。。。
finally
{
//无论是否捕获异常都必须处理的代码
}

进行处理

2.RUNTIME EXCEPTION

java虚拟机在运行时产生的异常,如0做分母,数组下标越界,其产生比较频繁,处理麻烦,对程序可读性和运行效率影响太大,因此由系统检测

用户可不做处理。

3.EXCEPTION

一般程序中可预知的问题,其产生的影响可能会带来意想不到的结果

因此Java虚拟机要求java程序必须捕获或声明所有的非运行时异常

//捕获异常相关问题

try
{
语句1;//一旦语句1出现异常,则语句2永远得不到执行
语句2;
} catch (exception1 e)
{......} catch (exception e)
{......} finally{....}//无论try中代码是否抛出异常
//finally中代码都会得到执行,通常在finally语句可以进行资源的清除工作

3.throw

3.1用来抛出异常     格式:throw new 异常名(参数);

3.2假设f方法抛出了A异常,则f方法由2种方式来处理A异常

throws A//谁调用f方法,谁处理A异常,本身不处理

try。。catch//自己处理

ps:要抛出的异常必须得是throwable的子类

4.throws

格式 void f()throws A

{。。。}

4.1 throws A表示调用f方法时f方法  可能  会抛出A类异常 , 建议  你调用f方法时最后对可能抛出的异常进行捕捉

4.2throws A不表示f方法一定会抛出A类异常,不表示调用f方法时,必

须对A异常进行捕捉

例如假设A是runtime exception子类异常,可以处理也可以不处理

class c extends Throwable
{
public void f()
{
throw new RuntimeException();//不报错
}
}
public class A
{
public static void main(String [] args)
{ }
}

ps:1.所有的catch最多只能有一个被执行,也可能所有的catch都没有被执行

2.先catch子类异常再catch父类异常,如果相反则编译时会报错

3.重写方法抛出异常的范围不能大于被重写方法排除的异常范围

//自定义异常A
class A extends Excepion
{
} //自定义异常B
class B extends Exception
{
} //自定义异常C
class C extends Exception
{
} class M
{
void f() throws A, B
{
}
} class N extends M
{
void f() throws A,B //可以throws A或B,也可以throws A,B
也可以不throws,但不可以throws C
即"子类覆盖了父类方法时,子类方法抛出异常的范围不能大于父类方法抛出的异常范围"
{
}
} class Test
{
public static void main(String[] args)
{}
}

最新文章

  1. Webform(文件上传)
  2. Nodejs开发(1.Sublime Text 3配置)
  3. laravel 控制器里 redirect url地址传两个参数的方法
  4. PageBean分页组件
  5. 菜鸟从零学编程(八)——将MyEclipse项目导入到Eclipse
  6. IPC with pipes, demo of 'popen'
  7. topcoder srm 628 div2 250 500
  8. VirtualBox NAT方式与主机互相通信
  9. mac os的android开发国内库下载地址
  10. Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作
  11. 2数组的slice和splice方法
  12. 按钮的图标 Button icons-JQUERY MOBILE 1.0正式版中文手册
  13. Android Studio中.9.png文件出错问题
  14. 简单的利用JS来判断页面是在手机端还是在PC端打开的方法
  15. ApiUser
  16. 高性能之js
  17. 【iCore1S 双核心板_FPGA】例程十七:基于双口RAM的ARM+FPGA数据存取实验
  18. WordCount 3
  19. Scala开发入门指南
  20. Flink BLOB架构

热门文章

  1. composer 配置 切换中国镜像
  2. Hadoop 启动/停止集群和节点的命令
  3. 连接mongodb服务
  4. Nginx开始(自己使用,简单开始)
  5. C语言随笔2: rom ram 及其运行的过程
  6. MSComm控件进行串口编程的基本步骤
  7. Jmeter BeanShell笔记
  8. 计算机二级-C语言-对文件的读写操作。链表的定义与赋值。对字符串的遍历和处理。
  9. Python - int()
  10. cglib用法