JAVA(例外処理と分類、Javaリフレクション)詳細説明の基礎

異常.JAVAの分類および治療

1.コンセプト

この方法は、通常の方法で作業を完了できない場合は、別のルートでメソッドを終了することができます。この場合、オブジェクトは、エラー・メッセージをカプセル化しスロー。この時点では、この方法は、任意の値なしで終了し、すぐに戻ります。また、このメソッドを呼び出す他のコードは、例外ハンドラにコードを実行するための例外処理メカニズムを継続することはできません。

JAVA(例外処理と分類、Javaリフレクション)詳細説明の基礎


2.優れたカテゴリー

ThrowableのJava言語はすべて間違っているか、異常なスーパークラスです。次の層は、例外やエラーに分かれています

エラー

1.エラー・カテゴリには、内部エラーや資源の枯渇システムのJavaランタイムエラーを指します。アプリケーションは、そのクラスのオブジェクトをスローしません。もしこのようなエラーは、ユーザーに通知することに加えて、発生し、残りはプログラムの安全な終了を作ってみるです。

例外( RuntimeExceptionが、CheckedException

2.例外二つの枝があり、一つは一つCheckedExceptionある、のRuntimeException異常動作です。RuntimeException のような:NullPointerExceptionが、ClassCastExceptionが、チェック例外CheckedException、などによるIOExceptionを、のSQLExceptionへのI / Oエラーなど。RuntimeExceptionは、Java仮想マシンの通常動作中にスローされることがあり、これらの例外のスーパークラスです。RuntimeExceptionが発生した場合、それはプログラマのエラーでなければなりません。

異常CheckedException:一般的な外部エラーは、そのような異常はコンパイル時に発生し、Javaコンパイラは、このような例外をキャッチするためのプログラムを強制的に、このプログラムを置くためにあなたを求めて表示される異常トライキャッチすることができ、異常なクラス一般的にいくつかの側面が含まれています。

1.ファイルの末尾にデータを読み取ろうとします

不正なURLを開こうとすると2

与えられた文字列に基づいて、クラスのオブジェクトを検索してみてください、そして、このクラスの文字列表現は存在しない3.

3.珍しい治療

問題は、特定の処理が発生していないが、呼び出し元(スロー、スロー)に投げ続けました

例外がスローされ、スロー三つの形式、1つのスローは、ありますが、自動的に例外をスローするシステムがあります。

JAVA(例外処理と分類、Javaリフレクション)詳細説明の基礎


例外目標とアプローチをキャッチキャッチしてみてください

4.スローの投球との違い:

異なる場所

機能で使用される1スローは、複数の例外クラスが続き、そして機能内で使用されるスローそれは例外オブジェクトが続きます。

さまざまな機能:

2.が発生する可能性のある機能上の問題は、治療の前に与えられることができることを、発信者のノウハウを聞かせて、例外を宣言するのに使用スロー、スロースローは、特定の問題をオブジェクト、スローを行う、関数は、呼び出しにジャンプを終了しました誰が呼び出し側にスローされた特定の問題を対象とします。それはthrow文が到達不能にするので、他の文を定義していない以下の、独立して存在しています。

それがスローされた例外オブジェクトのいくつかの種類を実行する必要がスロー、例外がスローされるスロー; 3.異常、必ずしもこれらの異常が発生する可能性を表しているスロー。

4.異常な、または単にスローの負の治療は、例外がスローされることがありますされているが、異常な機能に対処するためではない両方、実際のハンドルの例外は、上位レイヤ機能の処理によって呼び出さ。

二つ。Javaリフレクション

1.動的言語

動的言語、プログラムを参照は、実行時に、その構造を変更することができます。新しい機能を導入することができ、既存の機能は削除され、他の構造変化することができます。一般的なJavaScriptは動的言語であるなど、ルビー、Pythonと他の動的言語にも属しており、Cに加えて、C ++は、動的言語の一部ではありません。前記半動的言語からJava反射角。

2.反射機構(動作状態、既知のクラスの属性およびメソッドのすべて)の概念

および方法のいずれかを呼び出すことができる任意のオブジェクトのために; Javaで反射機構は、任意のクラスは、このクラスのすべてのプロパティおよびメソッドを知ることができるため、意味動作状態にあるそのような情報及び動的への動的アクセスJava言語の反射になる機能オブジェクトのメソッドを呼び出します。

3.反射アプリケーション

コンパイル時と実行時型タイプ

在 Java 程序中许多对象在运行是都会出现两种类型:编译时类型和运行时类型。 编译时的类型由声明对象时实用的类型来决定,运行时的类型由实际赋值给对象的类型决定 。如:

Person p=new Student();其中编译时类型为 Person,运行时类型为 Student。

的编译时类型无法获取具体方法

程序在运行时还可能接收到外部传入的对象,该对象的编译时类型为 Object,但是程序有需要调用该对象的运行时类型的方法。为了解决这些问题,程序需要在运行时发现对象和类的真实信息。然而,如果编译时根本无法预知该对象和类属于哪些类,程序只能依靠运行时信息来发现该对象和类的真实信息,此时就必须使用到反射了。

4. Java 反射 API

反射 API 用来生成 JVM 中的类、接口或则对象的信息。

1. Class 类:反射的核心类,可以获取类的属性,方法等信息。

2. Field 类:Java.lang.reflec 包中的类,表示类的成员变量,可以用来获取和设置类之中的属性值。

3. Method 类: Java.lang.reflec 包中的类,表示类的方法,它可以用来获取类中的方法信息或者执行方法。

4. Constructor 类: Java.lang.reflec 包中的类,表示类的构造方法。

5. 反射使用步骤(获取 Class 对象、调用对象方法)

1. 获取想要操作的类的 Class 对象,他是反射的核心,通过 Class 对象我们可以任意调用类的方法。

2. 调用 Class 类中的方法,既就是反射的使用阶段。

3. 使用反射 API 来操作这些信息。

6. 获取 Class 对象的 3 种方法

调用某个对象的 getClass()方法

Person p=new Person();

Class clazz=p.getClass();

调用某个类的 class 属性来获取该类对应的 Class 对象

Class clazz=Person.class;

使用 Class 类中的 forName()静态方法(最安全/性能最好)

Class clazz=Class.forName("类的全路径"); (最常用)

当我们获得了想要操作的类的 Class 对象后,可以通过 Class 类中的方法获取并查看该类中的方法和属性。

JAVA(例外処理と分類、Javaリフレクション)詳細説明の基礎


7. 创建对象的两种方法

Class 对象的 newInstance()

1. 使用 Class 对象的 newInstance()方法来创建该 Class 对象对应类的实例,但是这种方法要求该 Class 对象对应的类有默认的空构造器。

调用 Constructor 对象的 newInstance()

2. 先使用 Class 对象获取指定的 Constructor 对象,再调用 Constructor 对象的 newInstance()方法来创建 Class 对象对应类的实例,通过这种方法可以选定构造方法创建实例。

JAVA(例外処理と分類、Javaリフレクション)詳細説明の基礎

一.JAVA 异常分类及处理

1. 概念

如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。

JAVA(例外処理と分類、Javaリフレクション)詳細説明の基礎


2. 异常分类

Throwable 是 Java 语言中所有错误或异常的超类。下一层分为 Error 和 Exception

Error

1. Error 类是指 java 运行时系统的内部错误和资源耗尽错误。应用程序不会抛出该类对象。如果出现了这样的错误,除了告知用户,剩下的就是尽力使程序安全的终止。

Exception(RuntimeException、CheckedException

2. Exception 又有两个分支,一个是运行时异常 RuntimeException ,一个是CheckedException。RuntimeException 如 : NullPointerException 、 ClassCastException ;一个是检查异常CheckedException,如 I/O 错误导致的 IOException、SQLException。 RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。 如果出现 RuntimeException,那么一定是程序员的错误.

检查异常 CheckedException:一般是外部错误,这种异常都发生在编译阶段,Java 编译器会强制程序去捕获此类异常,即会出现要求你把这段可能出现异常的程序进行 try catch,该类异常一般包括几个方面:

1. 试图在文件尾部读取数据

2. 试图打开一个错误格式的 URL

3. 试图根据给定的字符串查找 class 对象,而这个字符串表示的类并不存在

3. 异常的处理方式

遇到问题不进行具体处理,而是继续抛给调用者 (throw,throws)

抛出异常有三种形式,一是 throw,一个 throws,还有一种系统自动抛异常。

JAVA(例外処理と分類、Javaリフレクション)詳細説明の基礎


try catch 捕获异常针对性处理方式

4. Throw 和 throws 的区别:

位置不同

1. throws 用在函数上,后面跟的是异常类,可以跟多个;而 throw 用在函数内,后面跟的是异常对象。

功能不同:

2. throws 用来声明异常,让调用者只知道该功能可能出现的问题,可以给出预先的处理方式;throw 抛出具体的问题对象,执行到 throw,功能就已经结束了,跳转到调用者,并将具体的问题对象抛给调用者。也就是说 throw 语句独立存在时,下面不要定义其他语句,因为执行不到。

3. throws 表示出现异常的一种可能性,并不一定会发生这些异常;throw 则是抛出了异常,执行 throw 则一定抛出了某种异常对象。

4. 两者都是消极处理异常的方式,只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

二. JAVA 反射

1. 动态语言

动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化。比如常见的 JavaScript 就是动态语言,除此之外 Ruby,Python 等也属于动态语言,而 C、C++则不属于动态语言。从反射角度说 JAVA 属于半动态语言。

2. 反射机制概念 (运行状态中知道类所有的属性和方法)

在 Java 中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能成为 Java 语言的反射机制。

3. 反射的应用场合

编译时类型和运行时类型

在 Java 程序中许多对象在运行是都会出现两种类型:编译时类型和运行时类型。 编译时的类型由声明对象时实用的类型来决定,运行时的类型由实际赋值给对象的类型决定 。如:

Person p=new Student();其中编译时类型为 Person,运行时类型为 Student。

的编译时类型无法获取具体方法

程序在运行时还可能接收到外部传入的对象,该对象的编译时类型为 Object,但是程序有需要调用该对象的运行时类型的方法。为了解决这些问题,程序需要在运行时发现对象和类的真实信息。然而,如果编译时根本无法预知该对象和类属于哪些类,程序只能依靠运行时信息来发现该对象和类的真实信息,此时就必须使用到反射了。

4. Java 反射 API

反射 API 用来生成 JVM 中的类、接口或则对象的信息。

1. Class 类:反射的核心类,可以获取类的属性,方法等信息。

2. Field 类:Java.lang.reflec 包中的类,表示类的成员变量,可以用来获取和设置类之中的属性值。

3. Method 类: Java.lang.reflec 包中的类,表示类的方法,它可以用来获取类中的方法信息或者执行方法。

4. Constructor 类: Java.lang.reflec 包中的类,表示类的构造方法。

5. 反射使用步骤(获取 Class 对象、调用对象方法)

1. 获取想要操作的类的 Class 对象,他是反射的核心,通过 Class 对象我们可以任意调用类的方法。

2. 调用 Class 类中的方法,既就是反射的使用阶段。

3. 使用反射 API 来操作这些信息。

6. 获取 Class 对象的 3 种方法

调用某个对象的 getClass()方法

Person p=new Person();

Class clazz=p.getClass();

调用某个类的 class 属性来获取该类对应的 Class 对象

Class clazz=Person.class;

使用 Class 类中的 forName()静态方法(最安全/性能最好)

Class clazz=Class.forName("类的全路径"); (最常用)

当我们获得了想要操作的类的 Class 对象后,可以通过 Class 类中的方法获取并查看该类中的方法和属性。

JAVA(例外処理と分類、Javaリフレクション)詳細説明の基礎


7. 创建对象的两种方法

Class 对象的 newInstance()

1. 使用 Class 对象的 newInstance()方法来创建该 Class 对象对应类的实例,但是这种方法要求该 Class 对象对应的类有默认的空构造器。

调用 Constructor 对象的 newInstance()

2. 先使用 Class 对象获取指定的 Constructor 对象,再调用 Constructor 对象的 newInstance()方法来创建 Class 对象对应类的实例,通过这种方法可以选定构造方法创建实例。

JAVA(例外処理と分類、Javaリフレクション)詳細説明の基礎


おすすめ

転載: blog.51cto.com/14599798/2449408