Java中的异常处理机制,说一下Java中api异常和自定义异常及各自的使用场景

处理机制

JAVA的异常处理机制:如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。
在这种情况下会抛出一个封装了错误信息的对象。
此时,这个方法会立刻退出同时不返回任何值。
另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器

处理方式

捕获异常:
	在Java程序运行过程中系统得到一个异常对象,他将会沿着方法的调用,栈逐层回溯,寻找处理这异常的代码。
	找到能够处理这种异常的方法后,运行时系统把当前异常交给这个方法处理,若找不到可以捕获异常的方法,则运行时系统将会终止,相应的Java程序也将退出
声明抛弃异常:
	抛出异常有三种形式,一是throw,一个throws,还有一种系统自动抛异常。
	当Java程序运行时系统得到一个异常对象时,如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛弃异常。是在一个方法声明中的throw句中指明的
Throw和throws的区别: 
	 位置不同:throws用在函数上,后面跟的是异常类,可以跟多个;而throw用在函数内,后面跟的是异常对象。 
	 功能不同:throws用来声明异常,让调用者只知道该功能可能出现的问题,可以给出预先的处理方式;throw抛出具体的问题对象,执行到throw,功能就已经结束了,跳转到调用者,并将具体的问题对象抛给调用者。也就是说throw语句独立存在时,下面不要定义其他语句,因为执行不到。 
	 throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。 
	 两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

Api异常

Java中的异常处理机制,说一下Java中api异常和自定义异常及各自的使用场景_第1张图片

自定义异常

我们不可能期待JVM(Java虚拟机)自动抛出一个自定义异常,也不能够期待JVM会自动处理一个自定义异常。
发现异常、抛出异常以及处理异常的工作必须靠编程人员在代码中利用异常处理机制自己完成。
这样就相应的增加了一些开发成本和工作量,所以项目没必要的话,也不一定非得要用上自定义异常

所有异常都必须是 Throwable 的子类。
如果希望写一个检查性异常类,则需要继承 Exception 类。
如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。

场景

Api:
	调用方法时破坏了协议(没有按照规则进行传参,例:参数是非空集合,却传了一个空值)
  	知道有问题,但自己解决不了(例:有文件读取操作,但发现文件不存在)
自定义异常:
	需要提供对外接口时(000:success,500:error)

你可能感兴趣的:(Java)