java 语法错误是异常吗,JAVA异常处理语句

  java 语法错误是异常吗,JAVA异常处理语句

  00-1010 1.例外2的概念。例外3的架构。异常的处理3.1抛出异常3.2.1throws3.2.2try-catch3.3异常4的处理过程。自定义异常

  00-1010程序执行过程中的异常行为在Java中称为异常。

  常见的例外如下:

  

目录

Throwable:是异常系统的顶级类。它有两个重要的子类,错误和异常。

 

  例外:我们常说的例外就是例外。这样的问题可以通过代码来处理,让程序继续运行下去。

  错误:指Java虚拟机无法解决的严重问题。这种问题比较严重。一旦发生,就很难修复,就像一个人得了不治之症。

  系统的异常结构图大致如下:

  根据异常发生的时间,异常可以分为编译时异常(检查异常)和运行时异常(未检查异常)。

  RuntimeException及其子类是运行时异常。

  注意:写代码的语法错误不能称为异常。

  00-1010关于处理异常的两个想法:

  LBYL:操作前做充分的检查。

  EAFP:先操作,遇到问题再处理。

  异常处理的核心思想是EAFP。

  00-1010首先要做的是找出异常点的位置。

  关键词:投掷

  语法如下:

  抛出新的xxxException(异常的原因)比如写一个方法来获取数组的元素。

  public static int getElement(int[]arr,int index){ if(arr==null){ throw new nullpointerexception(数组为空);} if(index 0 index=arr . length){ throw new arrayindexoutofBoundsException(非法下标);} return arr[索引];}

  注意:

  Throw必须在方法内部抛出。抛出的对象必须是异常类或其子类。如果是RuntimeException类或其子类(即运行时异常),可以交给JVM处理。如果是编译时异常,需要自己处理,否则代码无法通过编译异常。一旦抛出,下面的代码就不会再执行了。

  00-1010主要有两种方式:投和试接。

  

1.异常的概念

抛出是为了声明一个异常。当方法抛出编译时异常时,它使用throws将异常抛出给方法的调用方进行处理。也就是说,当前方法不处理异常,提醒方法的调用方处理异常。

 

  语法如下:

  返回值方法名称()引发异常类型1,异常类型2{.}

  这种用法在本文介绍常用于比较和克隆对象的接口时已经出现过。

  链接原始抽象类和接口

  使用说明:

  抛出位置是,在方法的参数列表后声明的异常必须是异常类或其子类抛出。其后可以有多个例外,用逗号分隔。如果存在父子关系,调用方在声明父类时必须处理异常,或者继续使用throws抛出throws,这与Throws非常相似。他们之间的区别需要注意。

  Throwthrows在方法中使用。

  在方法声明之后

  一次抛出只能抛出一个异常。

  它后面可以跟多个异常类名。

  -align:center">抛出的异常由方法内的语句处理

  

抛出的异常由方法的调用者处理

  

执行throw是一定出现了某种异常

  

表示有出现异常的可能性,并不一定就会出现这些异常

  

 

  

3.2.2try-catch

try-catch就是真正的对异常进行处理,语法如下:

 

  

 try { //可能出现异常的代码放在此处} catch(xxxException e) { //若try抛出的异常被catch捕获到,在此处进行处理}

try后面可以有多个catch,catch括号中可以写多个异常类型,中间使用隔开

 

  还是以上面的获取数组元素的方法为例,对其进行修改:

  

 public static int getElement(int[] arr,int index) { return arr[index]; }//main方法中使用try-catchpublic static void main(String[] args) { int[] arr=new int[]{1,2,3,4,5}; try { getElement(null,1); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("下标越界"); } catch(NullPointerException e) { System.out.println("空数组"); } }

 

  注意:

  try块内抛出异常位置之后的代码不会被执行

  

 

  try抛出的异常需要被catch捕获才能处理,如果抛出的异常没有被捕获,则会继续向外抛出,直至JVM中断程序

  如果异常之间具有父子关系,一定是子类异常在前先被捕获,父类异常后被捕获

  使用try-catch后只会打印自己代码块内的信息,上图中也可以看到,想要异常信息尽可能完整,可使用printStackTrace()方法

  

 

  此外还有一个关键字:finally

  这个关键字需要记住的是:不管程序是否发生异常,finally中的语句都会被执行

  基于此特点,所以finally一般是用来进行一些资源清理的扫尾工作

  还有,不建议在finally中放入return语句,比如下面代码

  

 public static int fc() { try { retrun 1; } catch(ArithmeticException e) { System.out.println("算数异常"); } finally { return 10; } }

结果返回的是10,try中的1因为fianlly的存在是无法返回的

 

  

 

  

3.3异常的处理流程

在JVM中有一块内存空间叫做"虚拟机栈" ,这块空间是专门用来存储方法之间的调用关系的,这种调用关系用调用栈来描述

 

  当代码中出现异常而又没有对应的处理方式的时候,就会沿着调用栈向上传递,直到传递到JVM终止程序

  异常的处理流程如下:

  优先执行try中的代码抛出异常若catch捕获到异常,则处理异常,否则向上传递如果一直到 main 方法也没有合适的代码处理异常, 就会交给 JVM 来进行处理, 此时程序就会异常终止

 

  

4.自定义异常

虽然Java本身就已经有很多异常类,但在实际的开发中仍然会遇到一些Java中没有包含的异常,此时就需要自定义异常

 

  具体实现方式如下:

  自定义一个类,继承Exception(编译时异常)或RunTimeException(运行时异常)类里面实现一个带有String类型参数的构造方法,String是为了说明出现异常的原因到此这篇关于JavaSE详细讲解异常语法的文章就介绍到这了,更多相关Java异常内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: