java 异常声明_java中异常概念及分类、捕获异常、声明异常

异常的概念_分类

1.1异常的概念

异常( Exception 也称例外)就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序

所需文件找不到

网络连接不通或中断

算术运算错 (被零除…)

数组下标越界

装载一个不存在的类或者对null对象操作

类型转换异常

……

当Java程序出现以上的异常时,就会在所处的方法中产生一个异常对象。这个异常对象包括异常的类型,异常出现时程序的运行状态以及对该异常的详细描述。

1.2异常的分类

bd8d411b8bf3290b7d8063c43f0ed874.png

2.异常处理的方式一_捕获异常

2.1捕获异常所使用的关键字try、catch、finally

2.2try-catch-finally的使用

try-catch组合

正常情况

44f4be83ff52e59397bcf16b533a7d4a.png

异常情况,异常出现的类型与捕获的类型匹配

df47ebeacdb55835d903c0befb54f122.png

异常情况,异常出现的类型与捕获的类型不匹配

a461675c661870e723df0d1b8e081fed.png

try-finally组合

finally是无论是否产生异常,都执行的代码,但是有一种情况finally不执行,即退出Java虚拟机。

try-catch-finally组合

正常情况:执行try-finally

异常情况:类型相匹配,执行try-catch-finally

异常情况:类型不相匹配,执行try-finally

如果在catch中存在return语句,则先执行完finally语句再回头执行return语句

c286b85e66e6267080f7435803bbf49b.png

3.异常处理方式二_声明异常

3.1声明异常的关键字throws

方法名的后面,用于声明该方法可能会产生一个异常

如果方法声明的是Exception类型的异常或者是Checked Exception异常,要求方法的调用处必须做处理。

(1)继续使用throws向上(方法的调用处)声明

(2)使用try-catch-finally进行处理

如果声明的是RuntimeException类型的异常,那么方法的调用处可处理可不处理。

3.2继承关系中的声明异常

父类的方法声明了Exception类型的异常,子类在重写方法时,可以声明也可以不声明。但是如果子类重写后的方法使用super关键字调用父类的方法,那么要求必须对异常进行处理。

如果父类的方法没有异常,那么子类的方法如果一定会有Exception或Checked异常,要求子类必须自己使用try-catch处理,或者给父类方法加上异常的声明

如果子类在重写父类的方法时,产生的异常是RuntimeException异常时,那么可以不用处理

3.3throw抛出异常对象

写在方法里

在捕获一个异常前,必须有一段代码先生成异常对象并把它抛出。这个过程我们以手工做,也可以由JRE来实现,但是他们调用的都是throw子句。

throws与throw

throws用于声明方法可能会产生的异常类型

throw手动抛出异常对象

throws写在方法名称后面

throw用于写在方法里

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我来回答你的问题。 Java异常处理是一个非常重要的概念,它可以帮助我们更好地处理代码可能出现的错误情况,从而使我们的程序更加健壮。 在Java,有两种类型的异常:Checked Exception和Unchecked Exception。其,Checked Exception必须在代码显式地声明和处理,否则编译器会报错。而Unchecked Exception则不需要声明和处理,可以直接抛出。 当Java程序运行时,如果遇到了异常,它会自动抛出一个异常对象。我们可以通过try-catch语句来捕获并处理这些异常。如果我们想要抛出自己定义的异常,可以通过自定义异常类来实现。 下面是一个Java自定义异常类的示例代码: ```java public class MyException extends Exception { public MyException(String message) { super(message); } } ``` 在上面的代码,我们定义了一个名为MyException的自定义异常类,它继承自Java的Exception类。通过继承Exception类,我们可以获得异常处理的一些基本功能,例如getMessage()方法来获取异常信息。 在MyException类,我们还定义了一个构造方法,它接受一个字符串参数message,并将其传递给父类的构造方法。 下面是一个Java抛出异常与自定义异常类的应用示例代码: ```java public class Test { public static void main(String[] args) { try { int result = divide(10, 0); System.out.println(result); } catch (MyException e) { System.out.println(e.getMessage()); } } public static int divide(int x, int y) throws MyException { if (y == 0) { throw new MyException("除数不能为0"); } return x / y; } } ``` 在上面的代码,我们定义了一个名为Test的类,其包含了一个divide()方法和一个main()方法。 在divide()方法,我们判断了除数是否为0,如果是,就抛出一个MyException异常。 在main()方法,我们调用了divide()方法,并通过try-catch语句来捕获并处理可能抛出的MyException异常。 总之,Java异常处理是一个非常重要的概念,自定义异常类可以帮助我们更好地处理代码可能出现的错误情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值