捕捉所有违例
当前位置:以往代写 > JAVA 教程 >捕捉所有违例
2019-06-14

捕捉所有违例

捕捉所有违例

我们可建设一个节制器,令其捕捉所有范例的违例。详细的做法是捕捉基本类违例范例Exception(也存在其他范例的基本违例,但Exception是合用于险些所有编程勾当的基本)。如下所示:
catch(Exception e) {
System.out.println("caught an exception");
}
这段代码能捕捉任何违例,所以在实际利用时最好将其置于节制器列表的末端,防备跟从在后头的任何非凡违例节制器失效。
对付措施员常用的所有违例类来说,由于Exception类是它们的基本,所以我们不会得到关于违例太多的信息,但可挪用来自它的基本类Throwable的要领:

String getMessage()
得到具体的动静。

String toString()
返回对Throwable的一段扼要说明,个中包罗具体的动静(假如有的话)。

void printStackTrace()
void printStackTrace(PrintStream)
打印出Throwable和Throwable的挪用仓库路径。挪用仓库显示出将我们带到违例产生所在的要领挪用的顺序。
第一个版本会打印出尺度错误,第二个则打印出我们的选择流程。若在Windows下事情,就不能重定向尺度错误。因此,我们一般愿意利用第二个版本,并将功效送给System.out;这样一来,输出就可重定向到我们但愿的任何路径。
除此以外,我们还可从Throwable的基本类Object(所有工具的基本范例)得到别的一些要领。对付违例节制来说,个中一个大概有用的是getClass(),它的浸染是返回一个工具,用它代表这个工具的类。我们可依次用getName()或toString()查询这个Class类的名字。亦可对Class工具举办一些巨大的操纵,尽量那些操纵在违例节制中是不须要的。本章稍后还会具体报告Class工具。
下面是一个非凡的例子,它展示了Exception要领的利用(若执行该措施碰着坚苦,请参考第3章3.1.2小节“赋值”):
 

//: ExceptionMethods.java
// Demonstrating the Exception Methods
package c09;

public class ExceptionMethods {
  public static void main(String[] args) {
    try {
      throw new Exception("Here's my Exception");
    } catch(Exception e) {
      System.out.println("Caught Exception");
      System.out.println(
        "e.getMessage(): " + e.getMessage());
      System.out.println(
        "e.toString(): " + e.toString());
      System.out.println("e.printStackTrace():");
      e.printStackTrace();
    }
  }
} ///:~

该措施输出如下:
 

Caught Exception
e.getMessage(): Here's my Exception
e.toString(): java.lang.Exception: Here's my Exception
e.printStackTrace():
java.lang.Exception: Here's my Exception
        at ExceptionMethods.main

可以看到,该要领持续提供了大量信息——每类信息都是前一类信息的一个子集。

    关键字:

在线提交作业