疯狂java学习笔记四--异常管理

1.方法结束
  • 1.1)方法正常结束,是指执行到return语句,void方法默认也是有return语句的.
  • 1.2)方法非正常结束,是指执行不到return语句,或者虚拟机退出,或者抛出异常,即方法执行失败.
2.Java异常
  • 2.1)java异常分类
    受检查异常checked异常,该类型的异常是一定要处理的(例如IO异常)
    非检查异常unchecked异常,可以处理,也可以不处理的异常(例如Sql异常)
  • 2.3)异常的处理原则
   谁调用,谁处理
   即在哪个方法内去调用改方法,则由哪个方法去处理
  • 2.4)异常处理的方式
	try..catch..finally..去处理
	方法+throws+类型 声明
	throw new +实例 抛出

	jvm虚拟机对异常的处理方式:
		结束程序,打印异常堆栈信息.

	如果方法调用者不处理,可以继续向上抛出,最后到main方法,到jvm去处理
  • 2.5)异常链
	java运行时遇到异常,会生成一个异常对象,运行环境会去检查有没有对应的处理器(或者处理机制),
	如果有就调用对应的处理器去处理,没有就中断程序.
	
	java的异常调用链,可以定位到发生异常的堆栈,发生异常的代码,通过发生异常的地方向上冒泡,
	直到main方法或者run方法(线程).

	异常可以自定义和封装,以保证异常调用链的清晰,Throwable定义一个构造方法可以接受
	或者包装Throwable的子类(一般在企业级应用中会封装异常,反馈到客户端的只是提示信息,后端日志
	记录实际发生的异常)
  • 2.6)异常的继承关系
   						Object
   					   Throwable
   				Error			Exception
   							RuntimeException  SqlException  IOException
   					OutOfIndexException   NullPointException   ....		
一般的Error异常是关于硬件的,程序代码不可处理.
Exception则是程序方面的,需要程序员去处理,否则会发生异常状况
一般自定义异常继承Exception类,调用Exception的构造方法
  • 2.7)异常信息
	异常的getMessage(),异常信息
	printStrace(),异常的堆栈信息
3.try…catch…finally…块
	java在try块中包含的代码,首先有变量一定是局部变量,在try块外面没有办法引用
	try中包含的代码发生了异常那一行代码后面的代码不在执行,直接跳到对应的catch块去处理,如果没有对应的catch块,则中断程序.
	如果发生异常但是在异常catch中可以执行到return方法,则所有执行的过的代码依然有效,整个方法是成功执行的,只是try块发生异常的代码所在行后面的代码无法执行.
	finally块一定会执行,并且是在return方法之前执行,如果try块中没有return方法,异常也捕获处理了,则在执行finally块之后,继续执行try..catch..finally后面的代码
	catch是从最小的异常开始,捕获到之后,不会继续向下捕获,所以小的异常一定要写在前面.
	catch的异常是通过 instanceOf 来判断的是否是该异常及其子类的异常实例.
	catch到的异常可以在通过if()判断更明细异常处理方法
4.java7的特性
	1.自动关闭资源,一般finally用来关闭资源(垃圾回收器无法回收的资源,一般是硬件的开销比如数据库连接,IO操作),在java7中这些接口都实现了AutoClosable的接口,可以通过try(资源代码){}不需要写finally来手动关闭资源.
	2.多异常处理,可以catch(Exception e1 | Exception e2 ...) 这样的方式来在一个catch块中来处理多个异常,同时e1这样的有final修饰的不可改变的.

猜你喜欢

转载自blog.csdn.net/qq125281823/article/details/91973921