Java编程那些事儿82——异常处理惩罚语法1
当前位置:以往代写 > JAVA 教程 >Java编程那些事儿82——异常处理惩罚语法1
2019-06-14

Java编程那些事儿82——异常处理惩罚语法1

Java编程那些事儿82——异常处理惩罚语法1

副标题#e#

10.3 异常处理惩罚语法

为了利便措施员举办异常的处理惩罚,在Java语言中建设了一套语法,这些语法主要分为以下几个部门:

1、抛出异常

当措施运行时,假如发明异常的环境,通过生成对应的异常工具,并将该异常工具通报给Java的运行时系统,使得系统中包括该异常信息,这样的进程被称作抛出异常。

抛出异常是整个异常处理惩罚机制的起点,也是异常的起源地,一般呈此刻项目底层的代码中。

2、声明异常

当一个要领在执行时,除了可以或许完成正常的成果以外,还可以呈现一些异常环境,为了提醒挪用该要领的措施员留意处理惩罚这些异常环境,需要在要领的声明中将这些异常声明出来,这就是声明异常。

声明异常的语法使得异常处理惩罚越发容易举办实现。

3、捕捉异常及异常处理惩罚

当异常被抛出今后,假如不举办处理惩罚,则异常会在要领挪用进程中一直举办通报,直到最后一个要领,在J2SE中也就是main要领,最终将显示在节制台。

在实际项目中,当异常被抛出今后,需要首先捕捉到该异常,凭据异常的种类差异,别离举办处理惩罚。

4、声明自界说异常类

固然在JDK API中提供了几百个异常类,可是这些异常所代表的还只是常见的异常环境,在实际利用时照旧无法代表所有的异常环境,所以Java语言运行声明自界说的异常类,利用这些自界说的异常类来代表实际项目中JDK API无法代表的异常环境。

下面依次具体先容一下这些语法的相关法则。

10.3.1 抛出异常

在书写项目中相关的底层基本代码时,相关的要领除了实现应该实现的成果以外,还需要思量到各类异常环境,假如呈现该代码地址的要领无法处理惩罚的异常环境时,则应该在该要领内部抛出对应范例的异常时,使得整个要领的逻辑较量严谨。

譬喻,下面是一个实现将十进制数字转换为二进制或8进制字符串的要领:

/**

* 将自然数转换为二进制或八进制字符串

* @param value 需要转换的自然数

* @param radix 基数,只能取2或8

* @return 转换后的字符串

*/

public static String toString(int value,int radix){

 if(value == 0){

  return "0";

 }

 StringBuffer s = new StringBuffer();

 int temp; //余数

 while(value != 0){ //未转换竣事

  temp = value % radix; //取余数

  s.insert(0,temp); //添加到字符串缓冲区

  value /= radix; //去掉余数

 }

 return s.toString();

}


#p#副标题#e#

在该要领中利用除n取余的要领,将参数value转换为对应的字符串,当在main要领中以书写如下代码时:

System.out.println(toString(12,2));

则措施的运行功效是:

1100

这样在正常的环境下,措施得到了正确的功效,可是该要领由于逻辑的限制,只能实现将“自然数”转换为“二进制或八进制”字符串,假如在其它措施员误传入犯科的参数时,则措施会得到不正常的功效,譬喻书写如下挪用的代码时:

System.out.println(toString(12,16));

则措施的运行功效是:

12

这个功效在转换的逻辑上就是错误的。这样就因为其它措施员误传入犯科参数而呈现了错误的功效。假如该要领作为实际项目标一个逻辑存在,则会由于该要领的问题导致后续其它的成果也产生错误,这是每个措施员都不但愿看到的。

所以该要领固然在成果上到达了要求,可是逻辑照旧不严谨的,还需要在其它措施员挪用该要领时传入犯科参数这样的异常环境时,将这种异常陈诉出来,这就需要抛出异常的的代码了。

抛出异常的语法名目为:

throw 异常工具;

譬喻:

throw new NullPointerException();

IllegalArgumentException e = new IllegalArgumentException();

throw e;

该代码书写在要领或结构要领的内部。该语法中,利用throw要害字,后续为代表对应异常环境的异常类范例的工具。当系统执行到该代码时,将中止当前要领的执行,而直接返回到挪用该要领的位置。所以在该代码下面不能直接书写其它的代码,因为这些代码将永远无法执行到。譬喻:

throw new NullPointerException();

int n = 10; //语法错误,该代码无法达到

凭据该语法,则上面的转换要领改革今后的代码如下:

/**

* 将自然数转换为二进制或八进制字符串

* @param value 需要转换的自然数

* @param radix 基数,只能取2或8

* @return 转换后的字符串

*/

public static String toString(int value,int radix){

 //判定异常的代码

 if(value <0){

  throw new IllegalArgumentException("需要转换的数字不是自然数!");

 }

 if(radix != 2 && radix != 8){

  throw new IllegalArgumentException("进制参数犯科");

 }

 if(value == 0){

  return "0";

 }

 StringBuffer s = new StringBuffer();

 int temp; //余数

 while(value != 0){ //未转换竣事

  temp = value % radix; //取余数

  s.insert(0,temp); //添加到字符串缓冲区

  value /= radix; //去掉余数

 }

 return s.toString();

}

#p#副标题#e#

这里,当value的值小于0时,则抛出犯科参数异常,当radix的值不是2或8时,则抛出犯科参数异常。

这样在执行如下代码:

System.out.println(toString(12,2));

System.out.println(toString(12,16));

则措施的执行功效是:

1100

Exception in thread "main" java.lang.IllegalArgumentException: 进制参数犯科

at ThrowException.toString(ThrowException.java:22)

at ThrowException.main(ThrowException.java:7)

#p#分页标题#e#

这里当参数切合要求时,则输出正确功效1100,假如参数不正当,则抛出异常,由于异常没有得处处理惩罚,则将终止措施的执行,则节制台输出异常的信息,并显示异常的范例以及异常呈现的位置。

这样,就通过抛出异常的语法,使得该要领的逻辑较量严谨,在要领的参数不正当,即呈现异常环境时,将这个异常陈诉出来,使得该要领不会呈现错误的功效。

别的,抛出的异常将通报给运行时系统,这样就将这种异常的环境通报出来,提醒其它的布局举办处理惩罚。

10.3.2 声明异常

异常固然被抛出了,可是由于抛出异常的代码是在要领或结构要领的内部的,在挪用要领或结构要领时一般是无法看到要领或结构要领的源代码的,这样挪用的措施员就无法知道该要领或结构要领将呈现奈何的异常环境,所以需要有一种语法,可以使得挪用的措施员可以看到被挪用的布局大概呈现的异常环境,这就是声明异常的语法。

声明异常的语法雷同于药品上的副浸染说明,在患者服用药品时,知道药品的正常成果,可是无法具体相识药品的身分以及每种身分的含量(雷同于源代码),可是在药品的说明上都有副浸染的说明,譬喻过敏者不能服用等,这些和声明异常的语法在成果上是雷同。

声明异常的语法名目为:

throws 异常类名

譬喻:

public static void test(int n) throws IllegalArgumentException,IOException

public Test()throws IllegalArgumentException

该语法利用在要领和结构要领的声明今后,在throws要害字今后,书写该要领或结构要领大概呈现的异常,在这里需要书写异常类的类名,假如有多个,则利用逗号脱离这些异常类名即可。

这里需要留意的是:

1、这些异常必需是该要领内部大概抛出的异常

2、异常类名之间没有顺序

3、属于RuntimeException子类的异常可以不书写在throws语句今后,可是别的一类异常假如大概抛出则必需声明在throws语句之后

通过在对应的要领或结构要领声明中书写throws语句,使得挪用该要领或结构要领的措施员可以在挪用时看到对应布局大概呈现的异常环境,从而提示对付这些异常环境举办处理惩罚,从而加强措施的结实性。

并且纵然在措施由于未处理惩罚对应的异常而导致措施在运行时呈现错误时,也可以使措施员可以通过对应的提示得到错误的原因,并指导措施员举办逻辑的批改,这样都可以提高措施编写时的效率,也可以使措施员越发容易的编写出逻辑严谨的代码,从而增加项目标质量,提高措施的不变性。

可是声明异常今后,异常照旧存在的,异常还没有得到处理惩罚,在异常体系中最重要的照旧捕捉到异常,然后针对异常的范例差异作出对应的处理惩罚。

    关键字:

在线提交作业