异常

1、java异常的处理流程

2、异常分类
Error(表示JVM错误,一般不由程序开发人员处理)
Runtime Exception 运行时异常
Exception(表示程序处理异常)
throw 用户自定义异常

3、常见的RuntimeException类
NullPointerException:空指针异常;
NumberFormatException:字符串转换数字异常;
ArrayIndexOutOfBoundsException:数组越界;
StringIndexOutOfBoundsException:字符串越界;
ClassCastException:类型转换错误;
UnsupportedOperationException:该操作不被支持;
ArithmeticException:算术错误;
IllegalArgumentException:非法参数,在把字符串转换成数字的时候经常出现的一个异常;
IllegalArgumentException和NumberFormatException的区别

4、其他常见异常:

ClassNotFoundException 指定类不存在
IndexOutOfBoundsException 数组下标越界异常
FileNotFoundException 文件未找到异常
NoSuchMethodException 方法不存在异常
IOException IO 异常
SocketException Socket 异常

5、Exception,RuntimeException和Error的区别

Exception:在程序中必须使用try...catch进行处理。表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。
RuntimeException:其特点是Java编译器不去检查它,可以不使用try...catch进行处理,但是如果有异常产生,则异常将由JVM进行处理,如果出现RuntimeException,那么一定是程序员的错误。

Error:一般为底层的不可恢复的类,一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢出等。如java.lang.StackOverFlowError和Java.lang.OutOfMemoryError。对于这类错误,Java编译器不去检查他们。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和预防,遇到这样的错误,建议让程序终止。

Exception分为RuntimeException类,和非RuntimeException类;

Error和RuntimeException及其子类称为未检查异常(Unchecked exception),

Exception的非RuntimeException类称为受检查异常(Checked Exception)。编译是通不过的。这类异常一般是外部错误,例如文件找不到、试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。

6、throw 和 throws 的区别?

throw:用于主动抛出java.lang.Throwable 类的一个实例化对象。用来抛出任意异常的,你可以抛出任意 Throwable(意思是说你可以通过关键字 throw 抛出一个 Error 或者 一个Exception),包括自定义的异常类对象;

throws:是声明可能会抛出一个异常(作为方法声明和签名的一部分)。总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常。如果方法抛出了异常,那么调用这个方法的时候就需要处理这个异常。

7、final、finally、finalize 有什么区别?

final:是修饰符,如果修饰类,此类不能被继承;如果修饰方法和变量,则表示此方法和此变量不能在被改变,只能使用。

finally:是 try{} catch{} finally{} 最后一部分,表示不论发生任何情况都会执行,finally 部分可以省略,但如果 finally 部分存在,则一定会执行 finally 里面的代码。

finalize: 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法。

8、try-catch-finally 中哪个部分可以省略?

try-catch-finally 其中 catch 和 finally 都可以被省略,但是不能同时省略,也就是说有 try 的时候,必须后面跟一个 catch 或者 finally。

9、try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?

finally 一定会执行,即使是 catch 中 return 了,catch 中的 return 会等 finally 中的代码执行完之后,才会执行。

 


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值