• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
nanaxin
博客园    首页    新随笔    联系   管理    订阅  订阅
2022/7/29 第七组陈美娜 异常
异常
  • 抛出异常的程序后面不会执行。和retuen的作用对等

  • 如果抛异常的情况,还想输出后面的话

第一种,用if判断出特殊情况

第二种:try{}catch(),还帮你直接解决异常的地方,还有捕捉

如果知道某个条件可能会抛异常,但是不知道抛出哪些具体的异常时,用关键字try{

}catch(),异常的数据类型参数名

throw是抛出异常,不想解决抛给第二个类

image-20220729090804448

e.printStackTrace(),输出异常在哪里

image-20220729105132642

顶级异常:throwable

 

catch能抓多个异常,从小范围到大范围【ch08】

image-20220729114650892

 

 

 

 

Error和Exception区分:

Error是编译时错误和系统错误,系统错误在除特殊情况下,都不需要你来关心,基本不会出现。而编译时错误,如果你使用了编译器,那么编译器会提示。

Exception则是可以被抛出的基本类型,我们需要主要关心的也是这个类。编译没出错,运行出错

Exception又分为RunTimeException和其他Exception。

 

异常的继承体系结构:

最顶级的Throwable:错误,异常

Exception分类:编译器异常,运行期异常

1.编译期异常:其他;MyExceptiont

  • 必须处置的异常,即程序在运行时由于外界因素造成的一般性异常

  • Java程序必须显示处理,否则程序就会发生错误,无法通过编译

  • 在编译某个程序的时候,有可能会有这样那样的事情发生,比如文件找不到,这样的异常就必须在编译的时候处理,如果不处理编译通不过

编译器异常分类

java.lang.ClassNotFoundExeption:没有找到具有指定名称的类异常。 java.lang.FileNotFoundException:访问不存在的文件异常。 java.lang.IO Exception:操作文件时发生的异常。 java.sql.SQL Exception:操作数据库时发生的异常。

2.运行期异常:RunTimeException

  • 编译器不要求强制处置的异常。一般是指因设计或实现方式不当而导致的问题。也可以说,是程序员的原因导致的,是本来可以避免发生的情况。

注:各个各记五个英文的

如果一个方法没有捕获编译器异常,该方法必须使用throws来声明

异常举例:

NullPointerException: 空指针异常,一般出现于数组,空对象的变量和方法 ArrayIndexOutOfBoundsException: 数组越界异常 ArrayStoreException: 数据存储异常

ArithmeticException: 算数异常,一般在被除数是0中

ClassCastException: 类型转换异常

IllegalArgumentException: 非法参数异常 IllegalThreadStateException: 非法线程状态异常 NumberFormatException: 数据格式异常 OutOfMemoryException: 内存溢出异常 PatternSyntaxException: 正则异常

自定义异常

原因:当Java提供的异常类,不够使用时,需要自己定义一些异常类。

开发中,大部分情况下使用的都是运行期异常

为什么要手动抛异常?

因为要配合全局异常处理机制来解决问题

方法:

1.所有异常必须是throwable的子类

2.如果要定义一个编译器异常,需要继承Exception类

3.如果要定义一个运行期异常,需要继承RunTimeException

 

如果使用throw抛出一个编译期异常,就必须在方法的声明处使用throws关键字来标记异常

image-20220729115724536

 

 

image-20220729101231001

  • throw语句是可以当返回值

  • 在一个有返回值的方法中,如果有条件分支,一定要保证每种情况下都有返回值

 

throws和throw区别

一个方法中,throws可以抛多个异常,用逗号隔开

throws是在定义方法时候抛出异常,throw是在方法体内抛出异常

image-20220729132848971

 

自定义异常类

定义错误码,定义异常信息

 

异常链

有时候我们会捕获一个异常后再抛出另一个异常 顾名思义就是将异常发生的原因一个传一个串起来,即把底层的异常信息传给上层,这样逐层抛出。

例:今天为什么这么穷,只因为当年潘金莲看了西门庆一眼

 

 

当异常没被解决的时候,可以选择抛出问题,留给下一级解决,要不然自己解决

主方法中不要抛了,再抛就抛给虚拟机JVM了

 

 

 

 

try--finally-return

 

 

方法的重写

重写的子类不能抛出比父类抛出的异常范围更大

posted on 2022-07-29 21:20  小新与小葵一家  阅读(44)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3