Java中异常处理机制以及异常捕获,抛出

异常:当程序运行过程中, 或者编译过程中,因为用户的不当操作,而导致程序出错的现象。

处理异常的目的:提醒用户那里出错,让程序仍然能够正常运行。
错误:程序在运行期间发生了错误,通常不会有针对性的处理方式。错误的的发生往往都是系统级别的问题,都是jvm所在系统发生的并反馈给jvm的。无法针对处理,只能修正代码。
常见的异常:
1.ArithmeticException(数学类异常)
2.ArrayIndexOutOfBoundsException(错误的角标异常)
3.NullPointException (空指针异常)

异常分为:RuntimeException和Exception(非运行时异常)都继承与父类Throwable

异常的捕获

try{
//可能异常的代码
}catch(异常类型){
//异常处理的语句
}finally{
//一定会被执行的语句
}
try catch finally组合:检测异常,并传递给catch处理,并定义资源释放。
Java中异常处理机制以及异常捕获,抛出_第1张图片
Java中异常处理机制以及异常捕获,抛出_第2张图片
Java中异常处理机制以及异常捕获,抛出_第3张图片
异常的捕获
try {
d.show(1);//当调用了声明异常的方法时,必须有处理方式。要么捕获,要么声明。
}
catch (Exception ex)//括号中需要定义什么呢?对方抛出的是什么问题,在括号中就定义什么问题的引用。
{
System.out.println(“异常发生了”);
}
try finally 组合: 对代码进行异常检测,检测到异常后因为没有catch,所以一样会被默认jvm抛出。异常是没有捕获处理
的。但是功能所开启资源需要进行关闭,所有finally。只为关闭资源。
异常的抛出(throw关键字):
自定义异常抛出,有的异常需要,,最后由main函数抛给JVM
人为抛出异常:由低层向高层逐层抛出
Java中异常处理机制以及异常捕获,抛出_第4张图片
Java中异常处理机制以及异常捕获,抛出_第5张图片
思考:throw和throws的区别
1. throw用在函数内。throws用在函数上。
2. thorw抛出的是异常对象。throws用于进行异常类的声明,后面异常类可以有多个,用逗号隔开
3. 异常在方法复写中细节
异常在继承或者实现中的使用细节:
子类覆盖父类方法时,如果父类的方法声明异常,子类只能声明父类异常或者该异常的子类,或者声明越来越精细。
当父类方法声明多个异常时,子类覆盖时只能声明多个异常的子集越来越精细。
当被覆盖的方法没有异常声明时,子类覆盖时无法声明异常的。
举例:父类存在这种情况,接口也有这种情况,
问题:接口中没有声明异常,而实现的子类覆盖方法时发生了异常,怎么办?
无法进行throws声明,只能catch的捕获。万一问题处理不了呢?catch中继续throw抛出,但是只能将异常转换成
RuntimeException子类抛出

你可能感兴趣的:(Java中异常处理机制以及异常捕获,抛出)