「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战」。
茫茫人海千千万万,感谢这一秒你看到这里。希望我的文章对你的有所帮助!
愿你在未来的日子,保持热爱,奔赴山海!
题记:昨天我们已经了解完部分的异常处理机制,接下来就让我们继续来瞧瞧看Java的异常处理机制!
😮异常的处理机制(重点)
在 Java 应用程序中,异常处理机制为:抛出异常,捕捉异常。
🐇 声明异常throws
如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常。例如汽车在运行时它可能会出现故障,汽车本身没办法处理这个故障,那就让开车的人来处理。
-
声明异常:将问题标识出来,报告给调用者。如果方法内通过throw抛出了编译时异常,而没有捕获处理(稍后讲解该方式),那么必须通过throws进行声明,让调用者去处理。
关键字throws运用于方法声明之上,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常(抛出异常).
-
定义格式: throws语句用在方法定义时声明该方法要抛出的异常类型,如果抛出的是Exception异常类型,则该方法被声明为抛出所有的异常。多个异常可使用逗号分割。
修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2…{ } 复制代码注意:当方法抛出异常列表的异常时,方法将不对这些类型及其子类类型的异常作处理,而抛向调用该方法的方法,由他去处理。使用throws关键字将异常抛给调用者后,如果调用者不想处理该异常,可以继续向上抛出,但最终要有能够处理该异常的调用者。比如汽车坏了,开车的人也不会修理,只能叫修车公司来修理了。
-
演示一下:
一般来说,throws和 throw通常是成对出现的,例如:
public class ThrowsDemo { public static void main(String[] args) throws FileNotFoundException { readFile("a.txt"); } // 如果定义功能时有问题发生需要报告给调用者。可以通过在方法上使用throws关键字进行声明 public static void readFile(String path) throws FileNotFoundException { if(!path.equals("a.txt")) {//如果不是 a.txt这个文件 // 我假设 如果不是 a.txt 认为 该文件不存在 是一个错误 也就是异常 throw throw new FileNotFoundException("文件不存在"); } } } 复制代码而throws用于进行异常类的声明,若该方法可能有多种异常情况产生,那么在throws后面可以写多个异常类,用逗号隔开。
public class ThrowsDemo2 { public static void main(String[] args) throws IOException { readFile("a.txt"); } //若该方法可能有多种异常情况产生,那么在throws后面可以写多个异常类,用逗号隔开 //若有异常a是异常b的子类,也可以直接省略,写b异常 private static void readFile(String path) throws FileNotFoundException, IOException { if (!path.equals("a.txt")) {//如果不是 a.txt这个文件 // 我假设 如果不是 a.txt 认为 该文件不存在 是一个错误 也就是异常 throw throw new FileNotFoundException("文件不存在"); } if (!path.equals("b.txt")) { throw new IOException(); } } } 复制代码 -
throws抛出异常的规则:
- 如果是非受检异常(unchecked exception),即Error、RuntimeException或它们的子类,那么可以不使用throws关键字来声明要抛出的异常,编译仍能顺利通过,但在运行时会被系统抛出。
- 如果一个方法可能出现受检异常(checked exception),要么用
try-catch语句捕获,要么用throws子句声明将它抛出,否则会导致编译错误。 - 只有当抛出了异常时,该方法的调用者才必须处理或者重新抛出该异常。若当方法的调用者无力处理该异常的时候,应该继续抛出。
- 调用方法必须遵循任何可查异常的处理和声明规则。若覆盖一个方法,则不声明与覆盖方法不同的异常。声明的任何异常必须是被覆盖方法所声明异常的同类或子类。
🌸总结
相信各位看官都对异常处理机制的概念有了大概的了解吧,那我们继续期待下一章的异常更多的内容吧!欢迎期待下一章的到来!
让我们也一起加油吧!本人不才,如有什么缺漏、错误的地方,也欢迎各位人才大佬评论中批评指正!当然如果这篇文章确定对你有点小小帮助的话,也请亲切可爱的人才大佬们给个点赞、收藏下吧,一键三连,非常感谢!
学到这里,今天的世界打烊了,晚安!虽然这篇文章完结了,但是我还在,永不完结。我会努力保持写文章。来日方长,何惧车遥马慢!
感谢各位看到这里!愿你韶华不负,青春无悔!
\




近期评论