跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Java异常Exception详细讲解

目录

1、异常中最大的父类Throwable

2、try-catch-finally三条语句注意的问题

3、final-finally-finalize的各作用

4、throws关键字

5、throws和throw的区别

1、异常中最大的父类Throwable

Throwable可以分为两种:Error Exception:运行时异常(非受检异常)

非运行时异常(受检异常)

Error错误:Error是程序无法处理的错误,它是由jvm产生抛出的,比如OutOfMemoryError,ThreadDeath等,这些异常发生时,jvm会选择终止程序执行Exception:是程序本身可以处理的异常运行时异常:都是RuntimeException类及子类,如NullPointerException(空指针),IndexOutOfBoundException(数组越界)等,这些异常可以选择捕获处理,或者可以不处理非运行时异常:(受检异常)时除了RuntimeException以外的异常,类型上属于Exception类,从程序语法角度这些异常必须要进行处理,如果不处理,程序不饿能通过编译,如IOException,SQIException

2、try-catch-finally三条语句注意的问题

try,catch,finally均不能单独使用,三者可以组合使用,组合方式:try…catch, try…catch…finally, try…finally ,其中catch可以有一个或者多个,finally语句最多只能有一个三个语句块中变量的作用域为代码块,分别独立的不能互相访问,如果要在三块中都可以访问,就把变量定义到这些块外边如果存在多个catch块,最多只会匹配一个异常类且执行该catch块代码,而不会在执行其他catch块,且匹配顺序是从上到下,最多只会匹配一个异常类,也就是说也可以一个异常类都不执行catch捕获的异常类不能重复,且先捕获子类异常再捕获父类异常无论try中语句有没有问题,finally中的语句一定执行,finally为程序提供统一的出口,保证程序状态的统一管理,通常情况下finally中进行资源的关闭清除工作package com.exception;public class Test {public static void main(String[] args) {int[] a=new int[5];try {for (int i = 0; i <10 ; i++) {a[i]=i;}//空指针}catch (ArrayIndexOutOfBoundsException e){//弹出出错的地方System.out.println("1");e.printStackTrace();//访问异常,数组越界}catch (NullPointerException e){System.out.println("2");e.printStackTrace();//无论有错与否,finally最终执行} finally {System.out.println("都能执行");}System.out.println("---------------");}}

3、final-finally-finalize的各作用

final:用于定义常量的关键字finally:异常中总能执行的代码块finalize() :垃圾回收,该方法是系统调用,不用程序员手动调用

4、throws关键字

定义一个方法的时候可以使用throws关键字声明,表示该方法时不处理该异常,而是交给方法调用者处理该异常在定义方法时,throws关键字可以程序员自主选择使用,如果使用了,那么说明该方法时不处理该异常的如果主方(main)也使用throws关键字,那么就意味着主方法也不处理异常,最后留给jvm处理,jvm处理异常就是终止程序throws抛出一个子类异常,调用该方法的调用者可以不必须处理该异常

注意:

throw关键字:是可以自定义异常,也就是抛异常,抛出的时候是一个异常类的对象

5、throws和throw的区别

throws:

用在方法声明之后,跟着的是异常类名可以跟多个异常类,用逗号隔开表示抛出异常,有该方法的调用者处理throws表示出现异常的一种可能性,并不一定会发生异常

throw:

用在方法体内,跟着的是异常对象只能抛出一个异常对象表示抛出异常,有方法体内语句处理throw抛异常是一定会发生,并不是一种可能

代码表示:

package com.test;public class Throw {//throws Exception 代表该方法出现异常时不做处理public void deposit(int num1,int num2) throws Exception{// RuntimeException()是运行时异常最大的父类int sum;if(num2==0){throw new RuntimeException("可以自定义一个异常抛出:除数不能为0");}else{sum=num1/num2;}}}到此这篇关于Java异常Exception详细讲解的文章就介绍到这了,更多相关Java异常 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:Java 异常机制Exception和自定义异常Java Exception异常全方面分析Java异常(Exception)处理以及常见异常总结详解Java的Exception异常机制Java throw Exception实现异常转换Java异常 Exception类及其子类(实例讲解)

相关文章