什么是java的异常处理机制,java中异常处理机制的原理和应用
本文给大家带来一些java的知识,包括异常处理机制的原理和应用,包括异常和错误,trycatch语法,trycatch执行序列等等。希望对你有帮助。
如何解决写爬虫IP受阻的问题?立即使用。
一、Java异常简介
大家可能对trycatch不陌生,使用起来都很熟练。
当程序运行过程中出现错误时,就会抛出异常。抛出一个异常比终止程序要好。
也可以在知道要出错的时候执行trycatch操作,在异常的时候执行一些特殊的操作。
1、Exception和Error
异常和错误继承自Throwable类。在Java中,只能抛出或捕获Throwable类型的实例,这是异常处理机制的基本组件类型。
异常是可预测的异常,可以在业务之外获得和处理。
Error是一个意外的异常,当它发生时,会直接导致JVM无法管理。
异常可分为检查性异常和非检查性异常。
要检查性异常,在编写代码时必须使用try catch(例如IOException异常)。
检查非异常,编译器不会发现这个地方是否会产生一次,比如空指针异常,这是可以在代码编写或使用时通过规范避免的。例如,sts的findbugs函数可以检测代码的空指针异常。
2、NoClassDefFoundError 和 ClassNotFoundException 有什么区别?
NoClassDefFoundError是JVM运行时通过类路径加载类,找不到对应的类时抛出的错误。
如果这个异常可能在编译期间发生,那么它必须在编译期间抛出。
NoClassDefFoundError发生的场景:
该类所依赖的类或jar不存在。但是在不同的域中,总之找不到ClassNotFoundException的发生场景:
当调用类的forName方法时,指定的类public static void main(string[]args){
尝试{
class . for name(“test”);
} catch(ClassNotFoundException e){
e . printstacktrace();
} }
二、trycatch语法
1、try语句
try语句包含一段花括号内的代码,可能会抛出一个或多个异常。
2、catch语句
catch语句的catch参数类似于方法的声明,包括异常类型和异常对象。异常类型必须是Throwable class的子类,指示catch语句处理的异常类型。异常对象由运行时系统在try指定的代码块中生成并捕获,花括号包含对象的处理,其中可以调用对象的方法。
可以有多个catch语句,用于处理不同类型的异常。Java运行时系统从上到下检测每个catch语句处理的异常类型,直到找到匹配类型的catch语句。在这里,类型匹配意味着catch处理的异常类型与生成的异常对象或其父类的类型完全相同。因此,catch语句的顺序应该是从特殊到一般。
3、finally语句
无论try中是否会引发异常,finally语句中的代码都将被执行。finally语句块最重要的功能应该是释放所请求的资源。
4、throws语句
throws总是出现在函数头之后,以指示此方法可能引发的异常。
5、throw语句
和throws一样,只是位置不同。throw放在catch模块中,执行throw后程序会立即终止。throw之后的代码不执行,finally除外。
6、抛出异常
公共void测试()引发异常{
抛出新的异常();};
7、捕获异常
尝试{
//代码区}catch(异常e){
log.error(error: {} ,e);}最后{
//最后必须执行的部分}
三、trycatch的执行顺序
从try中的第一行代码开始,执行时JVM会创建一个异常对象。
判断catch是否能捕获jvm创建的异常对象,
如果被捕获,跳转到catch的代码块,继续按照catch中的代码逻辑执行,不结束程序;
如果没有,直接打印异常信息,结束程序。
如果try中没有异常,执行try中的代码,跳过catch,进入finally代码块。
四、异常处理原则
如果需要检测的异常在方法中抛出,必须在方法上声明,否则必须用try-catch在方法中捕获,否则编译会失败。
如果调用声明异常的函数,要么try-catch要么抛出,否则编译失败。
什么时候接球,什么时候投球?内容可以解决,但不能用catch解决。用throws告诉打电话的人,打电话的人会解决。
如果一个函数抛出多个异常,则在调用时必须有相应的多个catch用于目标处理。
推荐:以上《java教程》是全面掌握java异常处理机制原理及应用的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。