异常分类

异常分两种:

 1:编译时被检查的异常,只要是 Exception 及其子类都是编译时被检测的异常。

 2:运行时异常, 其中 Exception 有一个特殊的子类 RuntimeException ,以及 RuntimeException 的子类是运行异常,也就说这个异常是编译时不被检查的异常。

 

编译时被检查的异常和运行时异常的区别:

 编译被检查的异常在函数内被抛出,函数必须要声明,否编译失败。

 声明的原因:是需要调用者对该异常进行处理。 运行时异常如果在函数内被抛出,在函数上不需要声明。

不声明的原因:不需要调用者处理,运行时异常发生,已经无法再让程序继续运行,所以,不让 调用处理的,直接让程序停止,由调用者对代码进行修正。

 

定义异常处理时,什么时候定义 try ,什么时候定义 throws 呢?

功能内部如果出现异常,如果内部可以处理,就用 try ;

 如果功能内部处理不了, 就必须声明出来, 让调用者处理。 使用 throws 抛出,交给调用者处理。 谁调用了这个功能谁就是调用者;

 

自定义异常: 当开发时,项目中出现了 java 中没有定义过的问题时,这时就需要我们按照 java 异常建立思想,将项目的中的特有问题也进行对象的封装。这个异常,称为自定义异常。

 

对于除法运算, 0 作为除数是不可以的。 java 中对这种问题用 ArithmeticException 类进行描 述。对于这个功能,在我们项目中,除数除了不可以为 0 外,还不可以为负数。可是负数的部分 java 并没有针对描述。所以我们就需要自定义这个异常。

 

自定义异常的步骤:

1:定义一个子类继承 Exception 或 RuntimeException ,让该类具备可抛性 ( 既可以使用 throw 和 throws 去调用此类 )。

 2:通过 throw 或者 throws 进行操作。

 

异常的转换思想: 当出现的异常是调用者处理不了的,就需要将此异常转换为一个调用者可以处 理的异常抛出。

try  catch  finally 的几种结合方式:

1

2

3

Try

Try

Try

catch

catch

finally

finall

 

 

 

这种情况,如果出现异常, 并不处理, 但是资源一定关闭, 所以 try  finally 集合只为关闭资源 。 记住: finally 很有用,主要用户关闭资源。无论是否发生异常,资源都必须进行关闭。 System.exit(0); // 退出 jvm,只有这种情况 finally 不执行。

 

当异常出现后,在子父类进行覆盖时,有了一些新的特点:

1:当子类覆盖父类的方法时, 如果父类的方法抛出了异常, 那么子类的方法要么不抛出异常要 么抛出父类异常或者该异常的子类,不能抛出其他异常。

2:如果父类抛出了多个异常,那么子类在覆盖时只能抛出父类的异常的子集。

 

注意:

如果父类或者接口中的方法没有抛出过异常,那么子类是不可以抛出异常的, 如果子类的覆 盖的方法中出现了异常,只能 try 不能 throws 。

如果这个异常子类无法处理,已经影响了子类方法的具体运算,这时可以在子类方法中,通 过 throw 抛出 RuntimeException 异常或者其子类,这样,子类的方法上是不需要 throws 声明的。

 

常见异常:

  1. 脚标越界异常( IndexOutOfBoundsException )包括数组、字符串;

 空指针异常( NullPointerException )

2、类型转换异常: ClassCastException

3、没有这个元素异常: NullPointerException

4、不支持操作异常;

异常要尽量避免,如果避免不了,需要预先给出处理方式。比如家庭备药,比如灭火器。

 

包:定义包用 package 关键字。

1:对类文件进行分类管理。

2:给类文件提供多层名称空间。

 

如果生成的包不在当前目录下,需要最好执行 classpath ,将包所在父目录定义到 classpath 变量中即可。

一般在定义包名时, 因为包的出现是为了区分重名的类。 所以包名要尽量唯一。 怎么保证唯一 性呢?可以使用 url 域名来进行包名称的定义。

package pack;// 定义了一个包,名称为 pack。 注意:包名的写法规范:所有字母都小写。

 //package cn.itcast.pack.demo;

 

类的全名称是 包名 . 类名

编译命令: javac –d 位置( . 当前路径) java 源文件 (就可以自动生成包)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值