异常(异常类型|自定义异常|处理方案)

1.异常

1.1认识异常

什么是异常?

  • 异常代表程序出现的问题。

读取的文件不存在了

读取网络数据,结果断网了

异常的作用?

  • 异常是用来定位程序bug的关键信息,可以让我们快速打补丁。(会有一个异常文件,我们可以看异常文件)
  • 可以作为方法内部的一种特殊返回值,以便通知上层调用者,方法的执行问题。

这就是异常作为方法内部一种特殊返回值的实例,我们看运行结果就能知道问题所在,它的作用显而易见。

如果我们的参数正确,也完全不会影响我们程序执行。

1.1.1运行时异常

  • ArrayIndexOutOfBoundsException 越界异常
  • ArithmeticException 算数异常
  • NullPointerException 空指针异常

1.1.2编译时异常

    //定义一个方法,认识编译时异常
    public static void show02(){
        //编译异常:编译阶段报错,源代码中,有语法错误,无法通过编译。
        System.out.println("程序开始");
        String str="2021-11-02 19:25:31";
        //把字符串时间解析成Java中的一个日期对象。
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = sdf.parse(str);
        System.out.println(date);
        System.out.println("程序结束");
    }

1.2自定义异常

  • Java无法为这个世界上全部的问题都提供异常类来表示,如果企业自己的某种问题(比如发现你这个用户不是VIP),想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类了。
  • 那自定义异常肯定需要认爸爸,也就是继承RuntimeException运行时异常,或继承编译时异常Exception。

1.2.1自定义运行时异常

  • 定义一个异常类继承RuntimeException。
  • 重写构造器。
  • 通过throw new异常类(xxx)来创建异常对象并抛出。
  • 特点:编译阶段不报错,运行时才可能出现!提醒不属于激进型。

我们现在测试一下,年龄参数有问题运行程序会出现什么结果。

1.2.2自定义编译时异常

  • 定义一个异常类继承Exception。
  • 重写构造器。
  • 通过throw new异常类(xxx)创建异常对象并抛出。
  • 特点:编译阶段就报错,提醒比较激进。

我们现在测试一下,年龄参数有问题运行程序会出现什么结果。

现在sun公司包括实际的java开发使用编译类异常的可能性都在减少,因为编译时异常的侵略性太过严重,因为不管谁碰到了,都需要强制的抛出异常或者处理,现在的项目出现异常的概率也会小很多,所以现在java在全面摒弃编译时异常,所以还是推荐大家使用运行时异常。

1.3异常的处理方案

1.3.1异常的基本处理

抛出异常(throws)

  • 在方法上使用throws关键字,可以将方法内部出现的异常抛出去给调用者处理。

捕获异常(try…catch)

  • 直接捕获程序出现的异常

这是第一种情况,我们利用try…catch,但是代码正确,所以不会触发打印这个异常信息。

现在我们试一下如果故意把编译时异常提示的代码写错会发生什么。

那如果一个方法里,可能会出现两种编译时异常我们如何处理呢?

我们可以同时抛两个,或者我们直接把异常类型写成Exception,因为Exception是所有异常的爹。

1.3.2异常的处理方案

方案1(现在项目开发最推荐使用的)

  • 底层异常层层往上抛出,最外层捕获异常,记录下异常信息,并响应适合用户观看的信息进行提示。

方案2

  • 最外层捕获异常后,尝试重新修复。

如果您觉得文章对您有帮助,可以支持下博主,网络一线牵,一分也是缘。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇